首页 > 后端开发 > Golang > 正文

与 Java 的 GetMessage() 不同,我如何有效地比较和处理 Go 中的错误?

Mary-Kate Olsen
发布: 2024-11-25 21:09:11
原创
125 人浏览过

How Do I Effectively Compare and Handle Errors in Go, Unlike Java's GetMessage()?

比较 Go 中的错误消息

在 Java 中,您可以使用 GetMessage() 从异常中检索错误消息。然而,在 Go 中,没有为错误类型定义等效的方法。相反,必须采用自定义错误处理技术。

自定义错误处理

一种方法是定义一个包级变量来表示您想要的特定错误消息检查一下。例如:

var errExample = errors.New("this is an example")
登录后复制

返回错误时,可以使用此变量代替通用错误字符串:

if err := some_package.DoSomething(); err != nil {
    if err == errExample {
        // handle it however.
    }
}
登录后复制

导出错误变量

如果包外的代码需要访问错误,可以使用大写导出变量letter:

var ErrExample = errors.New("this is an example")
登录后复制

这允许您将错误与导出的变量进行比较:

if err == somepackage.ErrExample {
    // handle it
}
登录后复制

示例

  • 绝对文件路径: os.ErrNotExist
  • HTTP 错误: net/http.ErrServerClosed
  • 数据库错误: database/sql.ErrNoRows

陷阱:避免使用字符串比较

抵制与错误的 Error() 方法返回的字符串进行比较的诱惑。这可能会导致代码变得脆弱。例如:

if err.Error() == "this is an example" {
    // this is not recommended
}
登录后复制

相反,请使用上面概述的自定义错误处理方法。

以上是与 Java 的 GetMessage() 不同,我如何有效地比较和处理 Go 中的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板