具体看场景吧。 对于一些不可接受的系统错误,如服务启动时的那些初始化或一些严重的逻辑错误,像数据连接建立、日志文件打开、空指针等,可以直接 panic,这些都是严重影响程序正常运行的错误,存在这些错误,程序就不用启动了。 在服务启动后,常常会有些业务的错误,比如偶尔一次的数据保存失败、参数校验错误、短信发送失败,这些事情要能及时做好日志记录,报警工作,但服务不能 panic,还要保证服务的正常运行。 我的感觉,其实就一个原则,发生的 error 是否已经严重影响服务逻辑,如果在预判之类的错误,那我们就应该 return error,记录日志,并不需要人工干预才能恢复,否则建议 panic。 我平时写代码时,基本都是 error,而 panic 一般主要在启动时才会使用,保持程序运行环境的正常初始化。
具体看场景吧。
对于一些不可接受的系统错误,如服务启动时的那些初始化或一些严重的逻辑错误,像数据连接建立、日志文件打开、空指针等,可以直接 panic,这些都是严重影响程序正常运行的错误,存在这些错误,程序就不用启动了。
在服务启动后,常常会有些业务的错误,比如偶尔一次的数据保存失败、参数校验错误、短信发送失败,这些事情要能及时做好日志记录,报警工作,但服务不能 panic,还要保证服务的正常运行。
我的感觉,其实就一个原则,发生的 error 是否已经严重影响服务逻辑,如果在预判之类的错误,那我们就应该 return error,记录日志,并不需要人工干预才能恢复,否则建议 panic。
我平时写代码时,基本都是 error,而 panic 一般主要在启动时才会使用,保持程序运行环境的正常初始化。