Home >Backend Development >Golang >How to customize errors in golang
There are two ways to define error exceptions in go, but both require your return value to be of type error.
func Control() error { //xxxx }
The first way is to use the golang standard library package errors to define errors. The usage is very simple, just return errors.New(“string”) . This is the simplest error return.
The second way is to borrow the struct structure and create an Error() method of the struct. Note that the method name is Error, otherwise the following bug will occur and the Error method cannot be found.
./er.go:25: cannot use equalError literal (type equalError) as type error in return argument: equalError does not implement error (missing Error method)
The following is a relatively complete method of using Error. Not only errors, but also struct Error() method.
#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) } }
Related recommendations: golang tutorial
The above is the detailed content of How to customize errors in golang. For more information, please follow other related articles on the PHP Chinese website!