比较 golang 中的错误信息 [英] Compare error message in golang

查看:29
本文介绍了比较 golang 中的错误信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Let's say I create a new error in golang like so

err := errors.New("SOME_COMMON_ERROR_CODE")

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

In java, I'm used to being able to get Exception with GetMessage() messages. How would I compare that error if returned?

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

golang 是怎么做的?

How is this done in golang?

推荐答案

声明一个包级变量有错误:

Declare a package level variable with the error:

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

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

Use this value when returning errors. Compare against this value to check for the specific error:

if err == errExample {
    // handle it
}

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

Export the variable if code outside the package needs to access the error:

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

像这样使用它:

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

以下是一些示例.

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

Avoid comparing against the string returned from the error's Error() method. It can make your code brittle.

这篇关于比较 golang 中的错误信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆