# 自定义错误

URL: https://caijiao.org/go/05-utils/05-custom-error
Source: docs/go/05-utils/05-custom-error.md
Description: 本节介绍如何在 Go 语言中创建和使用自定义错误类型，以增强错误信息的表达能力。

## 1. 定义自定义错误类型

通过实现 `Error()` 方法定义结构体类型：

```go
type MyError struct {
    Code    int
    Message string
}

func (e *MyError) Error() string {
    return fmt.Sprintf("Error %d: %s", e.Code, e.Message)
}
````

## 2. 返回自定义错误

```go
func doSomething(flag bool) error {
    if !flag {
        return &MyError{Code: 123, Message: "Something went wrong"}
    }
    return nil
}
```

## 3. 断言自定义错误

通过类型断言获取错误的详细信息：

```go
err := doSomething(false)
if myErr, ok := err.(*MyError); ok {
    fmt.Println("Custom error code:", myErr.Code)
}
```

---

自定义错误帮助提供丰富的错误上下文，方便调试和处理。
