>  기사  >  백엔드 개발  >  golang의 오류를 사용자 정의하는 방법

golang의 오류를 사용자 정의하는 방법

尚
원래의
2020-01-14 11:51:024530검색

golang의 오류를 사용자 정의하는 방법

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.