[GoLang避坑实战-10] 不要 panic!Go 风格错误处理的"优雅避坑"指南

大家好,我是极客老墨。 写代码时,错误处理往往占了一半的工作量。文件打不开、网络连不上、数据格式不对,这些都是常态。Go 的错误处理很直接:错误就是一个返回值,你必须显式检查它。 这篇就聊聊 Go 的错误处理机制,看看它是怎么让代码更健壮的。 错误是值 Go 的核心理念:错误是值(Errors are values),不是异常。 error 接口 Go 内置的 error 是一个接口,只有一个方法: 1type error interface { 2 Error() string 3} 任何实现了 Error() string 方法的类型都是 error。 创建错误 1import "errors" 2 3// 方式 1:使用 errors.New 4err1 := errors.New("something went wrong") 5 6// 方式 2:使用 fmt.Errorf(支持格式化) 7err2 := fmt.Errorf("failed to open file: %s", filename) 8 9// 方式 3:自定义错误类型 10type MyError struct { 11 Code int 12 Msg string 13} 14 15func (e MyError) Error() string { 16 return fmt.Sprintf("error %d: %s", e.Code, e.Msg) 17} 要点: ...

2024-10-29 · 10 min · 2103 words · 老墨