【发布时间】:2015-02-09 11:50:54
【问题描述】:
如何处理 Go 中的大量错误?
我查看了我的代码,发现它充满了错误处理程序:
err = result.Scan(&bot.BID, &bot.LANGUAGE, &bot.SOURCE)
if err != nil {
log.Fatalf("result.Scan: %v", err)
return
}
fileName, err := copySourceToTemporaryFile(bot)
if err != nil {
log.Fatalf("copySourceToTemporaryFile: %v", err)
return
}
...
而且很多行看起来像:
// do something
// handle error
// handle error
// handle error
// do something 2
// handle error
// handle error
// handle error
我可以创建一个打印错误并停止处理的默认处理程序,或者至少将这个“错误处理程序垃圾”移出我的代码逻辑吗?
【问题讨论】:
-
一开始(后来)看起来很难看,但我碰巧喜欢这种错误捕获。这真的让我想:“在这种情况下我应该怎么做?我应该崩溃(致命),我应该继续使用其他方法/默认值还是应该询问用户”。如果您无论如何都执行
log.Fatalf(),您可以定义一个方法CrashIfErr(err error),只需调用log.Fatalf()。顺便说一句:在log.Fatalf()之后不需要return。
标签: error-handling exception-handling go