目录
1、使用实现Error接口方式
2、使用errors的方法构建异常对象
小结
学习笔记,写到哪是哪。
Go语言有内置的错误接口,可以通过实现接口的方式定义异常,和其他语言的try···catch语法不一样。我现在看着特别别扭。
内置的error接口如下:
type error interface { Error() string }1、使用实现Error接口方式
样例代码如下
package main
import "fmt"
type CustomError struct {
code int
msg string
}
func (error *CustomError) Error() string {
return fmt.Sprintf("Error -> code=%d,msg=%s\n", error.code, error.msg)
}
func test_intf(a, b int) (result int, errorMsg string) {
if a > b {
return a, ""
} else {
_error := CustomError{1, "a <= b"}
return 0, _error.Error()
}
}
func main() {
result, msg := test_intf(10, 20)
if result == 0 {
fmt.Println(msg)
} else {
fmt.Printf("result = %d\n", result)
}
}
执行结果
Error -> code=1,msg=a <= b
注意
1、构建自定义的异常结构体CustomError,实现Error方法。
2、使用errors的方法构建异常对象样例代码如下
package main
import (
"errors"
"fmt"
)
var errCust = errors.New("自定义异常")
func test_cust(a, b int) (int, error) {
if b == 0 {
return 0, errCust
}
return a / b, nil
}
func main() {
if res, err := test_cust(10, 0); err != nil {
fmt.Printf("test_cust error is %v\n", err)
} else {
fmt.Printf("test_cust is %d\n", res)
}
}
执行结果
小结test_cust error is 自定义异常
感觉还是漏了一些东西,我后面要好好想想学习路线问题,需要停下来反思一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)