Go 1.13 errors 包优雅的处理异常判断

Go 1.13 发布后对 errors 包有进一步的改善,其中errors.Is可以很方便的进行异常的判断。

以前的“气功波”式的判断方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func handleErr(err error) {
if err == nil {
return
}

if uerr, ok := err.(*url.Error); ok {
if noerr, ok := uerr.Err.(*net.OpError); ok {
if scerr, ok := noerr.Err.(*os.SyscallError); ok {
if scerr.Err == syscall.ECONNREFUSED {
// 终于确认是这个错误了
fmt.Printf("gurl: (7) couldn't connect to host\n")
return
}
}
}
}

fmt.Printf("%s\n", err)
}

新版本的判断方法

1
2
3
4
5
6
7
func newHandleErr(err error) {
// 短小精悍啊
if errors.Is(err, syscall.ECONNREFUSED) {
fmt.Printf("gurl: (7) couldn't connect to host\n")
return
}
}

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×