美文网首页Go基础学习
第 26 章:Error Handling(错误处理)

第 26 章:Error Handling(错误处理)

作者: 红尘丶 | 来源:发表于2025-10-09 17:57 被阅读0次

1. 章节简介

  • Go 提供 error 接口作为错误处理标准方式。
  • 常见方式:返回 error、自定义错误类型、panic/recover

2. 知识点讲解

(1) error 类型

type error interface {
    Error() string
}

(2) 返回 error

import "errors"

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

(3) 自定义错误

type MyError struct {
    Msg string
}
func (e MyError) Error() string {
    return e.Msg
}

(4) panic/recover

  • panic:程序遇到严重错误时退出。
  • recover:在 defer 中捕获 panic,防止程序崩溃。
func mayPanic() {
    panic("Something went wrong")
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from:", r)
        }
    }()
    mayPanic()
    fmt.Println("Program continues")
}

3. 代码示例

package main

import (
    "errors"
    "fmt"
)

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

func main() {
    res, err := divide(10, 2)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", res)
    }

    res, err = divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    }
}

4. 练习任务

  1. 写函数 openFile(filename string),当文件不存在时返回错误。
  2. 使用 panic/recover 捕获异常,保证程序继续运行。
  3. 尝试实现一个自定义错误类型,包含错误代码和消息。

5. 小结

  • error 是接口,所有错误都实现 Error() 方法。
  • 错误处理推荐方式是 返回 error,而不是异常机制。
  • panic/recover 用于极端情况,不是常规错误处理方式。

相关文章

网友评论

    本文标题:第 26 章:Error Handling(错误处理)

    本文链接:https://www.haomeiwen.com/subject/aadjzjtx.html