Go 具有两种不同的错误处理机制:

  • 大多数函数返回 errors;
  • 只有真正无法恢复的条件(例如超出范围的索引)才会产生运行时异常,我们称之为 panic
error
type error interface {
    Error() string
}
复制代码

错误处理示例

os.Open
func Open(name string) (file *File, err error)
复制代码
os.Openlog.Fatal
f, err := os.Open("filename.ext")
if err != nil {
    log.Fatal(err)
}
// do something with the open *File f
复制代码

自定义错误

error
err := errors.New("Houston, we have a problem")
复制代码
errorErrorerror

学到更多

有关更多示例,请参见 3种创建错误的简单方法。

Panic

Panics 类似于 C++ 和 Java 异常,但仅适用于运行时错误,例如跟随一个 nil 指针或试图对数组访问超出范围的索引。

延伸阅读

有关如何从 panics 中恢复和测试 panics 的教程,请参见 从 panic 中恢复。