Go 创建自定义错误类型

示例

在Go中,任何可以将自身描述为字符串的值均表示错误。任何实现内置error接口的类型都是错误。

// 错误界面由单个表示
// Error()方法,返回错误的字符串表示形式
type error interface {
    Error() string
}

下面的示例演示如何使用字符串复合文字来定义新的错误类型。

// 将AuthorizationError定义为复合文字
type AuthorizationError string

// 实现错误界面
// 在这种情况下,我只返回基础字符串
func (e AuthorizationError) Error() string {
    return string(e)
}

我现在可以将自定义错误类型用作错误:

package main

import (
    "fmt"
)

// 将AuthorizationError定义为复合文字
type AuthorizationError string

// 实现错误界面
// 在这种情况下,我只返回基础字符串
func (e AuthorizationError) Error() string {
    return string(e)
}

func main() {
    fmt.Println(DoSomething(1)) //成功!返回nil
    fmt.Println(DoSomething(2)) // 返回错误信息
}

func DoSomething(someID int) error {
    if someID != 1 {
        return AuthorizationError("不允许采取行动!")
    }

    // 在这里做点什么

    // 如果执行成功,则返回nil错误
    return nil
}