错误 Errors
Golang 中的错误处理方式会让我们自动考虑如何处理错误情况。
func main() {
user, err := getUser()
if err != nil {
fmt.Println(err)
return
}
profile, err := getUserProfile(user.ID)
if err != nil {
fmt.Prinln(err)
return
}
}
Definition
An Error is any type that implements the simple built-in error interface:
type error interface {
Error() string
}
i, err := strconv.Atoi("42b")
if err != nil {
fmt.Prinln("couldn't convert:", err)
return
}
Build own error interface
type userError struct {
name string
}
func (e userError) Error() string {
return fmt.Sprintf("%v has a problem with their account", e.name)
}
func sendSMS(msg, userName string) error {
if !canSendToUser(userName) {
return userError{name: userName}
}
}
The built-in Errors
packages
import "errors"
var err error = errors.New("something went wrong")