Golang 第五章 4.错误处理

  • By v2ray节点

  • 2026-03-26 16:41:27

  • 评论

在 Go 中,错误不是异常,而是值

函数通常返回一个 error 类型来表示错误。



error 类型

Go 内置 error 接口:

type error interface {
    Error() string
}

可以通过 Error() 方法获取错误描述
常用 fmt.Errorf 或自定义实现返回 error



函数返回错误示例

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, fmt.Errorf("除数不能为零")
    }
    return a / b, nil
}

b 为 0 → 返回错误
否则返回结果 + nil(表示无错误)



调用示例

result, err := divide(10, 0)
if err != nil {
    fmt.Println("错误:", err)
} else {
    fmt.Println("结果:", result)
}

输出:

错误: 除数不能为零


忽略错误(不推荐)

result, _ := divide(10, 2)
fmt.Println(result) // 5

_ 忽略错误返回值
仅适合确定不会出错的情况



自定义错误类型

type MyError struct {
    Code int
    Msg  string
}

func (e MyError) Error() string {
    return fmt.Sprintf("错误 %d: %s", e.Code, e.Msg)
}

func f() error {
    return MyError{Code: 404, Msg: "未找到"}
}

err := f()
fmt.Println(err) // 错误 404: 未找到

自定义结构体实现 Error() 方法
可以返回更多上下文信息



错误检查惯用法

Go 的习惯写法:

if err := someFunc(); err != nil {
    // 处理错误
    return err
}

将错误立即检查
减少嵌套
是 Go 风格的标准做法



总结

Go 不使用异常

错误是 返回值

使用 error 接口

自定义错误类型可以携带更多信息

调用函数时立即检查错误

v2ray节点购买