golang什么时候该返回error,什么时候panic?

如题
虽然在有全局的recover,panic之后也能返回response

阅读 4.9k
3 个回答

具体看场景吧。

对于一些不可接受的系统错误,如服务启动时的那些初始化或一些严重的逻辑错误,像数据连接建立、日志文件打开、空指针等,可以直接 panic,这些都是严重影响程序正常运行的错误,存在这些错误,程序就不用启动了。

在服务启动后,常常会有些业务的错误,比如偶尔一次的数据保存失败、参数校验错误、短信发送失败,这些事情要能及时做好日志记录,报警工作,但服务不能 panic,还要保证服务的正常运行。

我的感觉,其实就一个原则,发生的 error 是否已经严重影响服务逻辑,如果在预判之类的错误,那我们就应该 return error,记录日志,并不需要人工干预才能恢复,否则建议 panic。

我平时写代码时,基本都是 error,而 panic 一般主要在启动时才会使用,保持程序运行环境的正常初始化。

既然你有这个疑问,那么你只需要一直panic就行,直到你发现好像有些不能直接panic为止。

新手上路,请多包涵

?: 能不用panic就不用panic,改成error并加处理措施

1 篇内容引用
推荐问题
宣传栏