go에서 오류 예외를 정의하는 방법에는 두 가지가 있지만 둘 다 반환 값이 오류 유형이어야 합니다.
func Control() error { //xxxx }
첫 번째 방법은 golang 표준 라이브러리 패키지 오류를 사용하여 오류를 정의하는 것입니다. 사용법은 매우 간단합니다. 단지 error.New(“string”) 을 반환하면 됩니다. 이는 가장 간단한 오류 반환입니다.
두 번째 방법은 구조체 구조를 빌려 해당 구조체의 Error() 메서드를 만드는 것입니다. 메서드 이름은 Error입니다. 그렇지 않으면 다음 버그가 발생하고 Error 메서드를 찾을 수 없습니다.
./er.go:25: cannot use equalError literal (type equalError) as type error in return argument: equalError does not implement error (missing Error method)
다음은 Error를 사용하는 비교적 완전한 방법입니다. 오류뿐만 아니라 struct Error() 메서드도
#http://xiaorui.cc package main import ( "errors" "fmt" ) type equalError struct { Num int } //方法名字是Error() func (e equalError) Error() string { return fmt.Sprintf("你现在是数字是 %d ,还是超了55", e.Num) } func Equal(n int) (int, error) { if n > 55 { return -1, errors.New("超过了55") //生成一个简单的 error 类型 } return n, nil } func DiyEqual(n int) (int, error) { if n > 55 { return -1, equalError{Num: n} // 会调用equalError的Error方法 } return n, nil } func main() { //使用errors.New生成error对象 if result, err := Equal(100); err != nil { fmt.Println("错误:", err) } else { fmt.Println("结果:", result) } //不适用erros,自定义错误方式. if result, err := DiyEqual(100); err != nil { fmt.Println("错误:", err) } else { fmt.Println("结果:", result) } }
관련 권장 사항: golang 튜토리얼
위 내용은 golang의 오류를 사용자 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!