一尘不染

比较Golang中的错误消息

go

假设我像这样在golang中创建了一个新错误

err := errors.New("SOME_COMMON_ERROR_CODE")

在Java中,我习惯于获取GetMessage()消息的异常。如果返回,我将如何比较该错误?

if some_err := some_package.DoSomething(); some_err != nil {
    if some_err.GetMessage() == "SOME_COMMON_ERROR_CODE" {
        // handle it however.
    }
}

在golang中如何进行?


阅读 192

收藏
2020-07-02

共1个答案

一尘不染

声明包级别变量,并显示以下错误:

var errExample = errors.New("this is an example")

返回错误时使用此值。与此值进行比较以检查特定的错误:

if err == errExample {
    // handle it
}

如果程序包外部的代码需要访问错误,则导出变量:

var ErrExample = errors.New("this is an example")

像这样使用它:

if err == somepackage.ErrExample {
    // handle it
}

这里有一些例子

避免与错误的Error()方法返回的字符串进行比较。它会使您的代码变得脆弱。

2020-07-02