ERROR

概念

除了panicrecover之外,Go中还有一个内置的错误接口类型,任何类型只要实现Error() string方法,都可以传递error接口 类型变量,Go语言处理错误的方式是将error作为函数最后一个返回值,在调用函数时,通过检查其返回的error值是否为nil来进 行错误处理。

type error interface{ //接口类型
    Error() string
}

Go语言提供了两个函数返回实现了error接口的具体类型实例,一般的错误可以使这两个函数进行封装,当然,遇到复杂的错误也可以 自定义错误类型,只要实现error接口即可:

func New(text string) error{
    return &errorString{text}
}

最佳实践

  1. 在多个返回值的函数中,error一般作为最后一个返回值
  2. 如果一个函数返回error类型的变量,则先判断是否为nil
  3. defer语句应该放到err判断后面,不然可能产生panic
  4. 在错误逐层向上传递的过程中,错误信息应该不断的丰富与完善,而不是简单的抛出下层调用的错误,便于分析错误

33_error_0.PNG

其他要说的

Golang全面深入系列之 Error:https://studygolang.com/articles/12625
Go 语言如何实现error的优雅处理:https://blog.csdn.net/baogang409/article/details/72604333

阶段性总结

学了有一段时间了,也写了一些Go,感觉执行速度挺快的,毕竟不像Python这种解释性语言。部分语法与Python也很相像,从Python转到Go也不觉的陌生,学Go主要是写网络方面的程序,看网上的评价说Go对于网络编程性能还不错,要不然会有ngrok这种内网穿透的东东出 现。最后,路还长着,一次只学一点,细嚼慢咽的学。

标签: Golang

添加新评论