Go 1.13 errors 包优雅的处理异常判断
目录
Go 1.13 发布后对 errors 包有进一步的改善,其中errors.Is
可以很方便的进行异常的判断。
以前的“气功波”式的判断方法
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)
}
新版本的判断方法
func newHandleErr(err error) {
// 短小精悍啊
if errors.Is(err, syscall.ECONNREFUSED) {
fmt.Printf("gurl: (7) couldn't connect to host\n")
return
}
}