golang中经常需要判断 err 是否为 nil,经常占用3行的代码, 影响代码的美观, 如:
if err != nil{
// do something
}
那么如何编写较为美观实用的 err 判断代码呢?
- 实现错误处理函数
HandleErr
package utils
import "log"
// 处理错误
func HandleErr(err error, msg string, handler func(err error, msg string)) {
if err != nil && handler != nil {
handler(err, msg)
}
}
// 仅 panic
func HandleErrPanic(err error, msg string) {
panic(err)
}
// 仅输出日志
func HandleErrLogger(err error, msg string) {
log.Println("msg", msg, "err", err) // 换成自己项目中的日志调用
}
// 输出日志并 panic
func HandleErrLoggerPanic(err error, msg string) {
HandleErrLogger(err, msg)
HandleErrPanic(err, msg)
}
- 使用
func TestErr(t *testing.T) {
defer Recover()
err := errors.New("模拟错误!") // 错误发生
utils.HandleErr(err, "查询。。。失败", utils.HandleErrLoggerPanic) // 错误判断
}
func Recover() {
if r := recover(); r != nil {
log.Println("恢复异常", r)
}
}
- 输出的内容
2024/09/18 01:06:54 msg 查询。。。失败 err 模拟错误! 2024/09/18 01:06:54 恢复异常 模拟错误!
可见, 在业务代码中, 仅需一行就够判断错误, 简化了业务代码,


