Go基础学习

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

2025-10-09  本文已影响0人  红尘丶

1. 章节简介


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

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. 小结


上一篇 下一篇

猜你喜欢

热点阅读