分享
golang错误处理优化
hewolf · · 1572 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
一般条件下golang的错误处理模式如下:
err := ...
if err != nil {
//打印或者退出
}
这种模式可以打印出错误,但是很难查找错误的文件或者位置,可以写一个公用的检查错误函数处理,如下:
func CheckError(err error) bool {
if err != nil {
_, file, line, ok := runtime.Caller(1)
if ok {
emsg := fmt.Sprintf("file:%s, line:%d, error:%s", file, line, err.Error())
logger.Print(emsg)
} else {
logger.Print(err)
}
return true
}
return false
}
runtime.Caller(1)可以查找错误文件地址和错误行号,那么以后进行错误处理可以如下:
err := ...
if CheckError(err) {
//打印或者退出
}
这样以后一旦有错误问题马上就可以定位了
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1572 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
一般条件下golang的错误处理模式如下:
err := ...
if err != nil {
//打印或者退出
}
这种模式可以打印出错误,但是很难查找错误的文件或者位置,可以写一个公用的检查错误函数处理,如下:
func CheckError(err error) bool {
if err != nil {
_, file, line, ok := runtime.Caller(1)
if ok {
emsg := fmt.Sprintf("file:%s, line:%d, error:%s", file, line, err.Error())
logger.Print(emsg)
} else {
logger.Print(err)
}
return true
}
return false
}
runtime.Caller(1)可以查找错误文件地址和错误行号,那么以后进行错误处理可以如下:
err := ...
if CheckError(err) {
//打印或者退出
}
这样以后一旦有错误问题马上就可以定位了