我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Go - 错误。无法解包自定义错误类型

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Go - 错误。无法解包自定义错误类型

php小编西瓜为您介绍:在Go语言中,当我们使用自定义错误类型时,有时会遇到"错误。无法解包自定义错误类型"的问题。这个问题通常发生在我们尝试将自定义错误类型传递给其他函数或方法时。虽然这看起来是一个棘手的问题,但实际上有几种方法可以解决这个问题。在本文中,我们将探讨这个问题的原因,并提供解决方案,帮助您解决这个困扰。

问题内容

我正在尝试使用 go stdlib 包错误来使用 errors.as 解包自定义错误类型,但是似乎检查失败并且我无法提取底层错误。

我提取了一个最小的可重现示例:

package main

import (
    "errors"
    "fmt"
)

type myError struct {
    err error
}

func (m myError) Error() string {
    return fmt.Sprintf("my error: %s", m.err)
}

func retError() error {
    return &myError{errors.New("wrapped")}
}

func main() {
    var m myError
    if err := retError(); errors.As(err, &m) {
        fmt.Println("unwrapped", m.err)
    } else {
        fmt.Println(err)
    }
}

https://go.dev/play/p/i7bnk4-rdib - go 游乐场上的示例。如果启动,它将打印“我的错误:包装”,而不是预期的“未包装包装”。

errors.as 文档中的示例有效,我似乎无法理解我做错了什么 - 我将 *myerror 传递给 errors.as,这似乎是正确的(因为传递了 myerror引发恐慌:target 必须是非零指针,这是预期的)。

解决方法

而不是:

func reterror() error {
    return &myerror{errors.new("wrapped")}
}

做:

func retError() error {
    return myError{errors.New("wrapped")}
}

以上就是Go - 错误。无法解包自定义错误类型的详细内容,更多请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Go - 错误。无法解包自定义错误类型

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Go - 错误。无法解包自定义错误类型

php小编西瓜为您介绍:在Go语言中,当我们使用自定义错误类型时,有时会遇到"错误。无法解包自定义错误类型"的问题。这个问题通常发生在我们尝试将自定义错误类型传递给其他函数或方法时。虽然这看起来是一个棘手的问题,但实际上有几种方法可以解决这
Go - 错误。无法解包自定义错误类型
2024-02-09

Node.js下自定义错误类型详解

前言 一般来说,很少人会考虑如何处理应用产生的错误的策略,调试的过程中,简单地利用console.log(‘error')定位错误,基本够用了,通过留下这些调试信息,能够为我们以后的调试过程中升了不少时间,提高了维护性。所以错误提示非常重要
2022-06-04

自定义golang函数错误类型

是的,在 go 中可以定义自定义错误类型,通过创建实现 error 接口的结构体,并提供 error() 方法返回错误消息。自定义错误类型可以使用 errors.new 函数或自定义类型创建,在实战中,自定义错误类型可以提供更具体和有意义的
自定义golang函数错误类型
2024-05-02

在Golang中实现自定义错误类型

在 go 中创建自定义错误类型可提供更详细的错误消息。创建自定义错误类型:用 error 接口定义错误类型,实现 error() 方法返回错误消息。使用自定义错误类型:像使用任何其他错误类型一样使用自定义错误类型。实战案例:文件读取操作使用
在Golang中实现自定义错误类型
2024-04-15

java已定义类型错误如何解决

要解决Java中已定义类型错误,可以尝试以下方法:1. 检查已导入的类:确保已正确导入需要使用的类。可以使用import语句导入类,或者使用完全限定名来引用类。2. 检查类名称的拼写:检查类名称是否正确拼写。Java对类的名称是区分大小写的
2023-08-29

为什么我的自定义错误类型会导致特定模式的错误?

有志者,事竟成!如果你在学习Golang,那么本文《为什么我的自定义错误类型会导致特定模式的错误?》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~问题内容我正在努力处理 go 的
为什么我的自定义错误类型会导致特定模式的错误?
2024-04-05

如何在 Golang 中使用自定义错误类型?

在 golang 中使用自定义错误类型可以创建特定于应用程序的更具描述性和可操作性的错误消息。步骤如下:声明自定义错误类型并实现 error 接口。在函数中返回自定义错误。使用 errors.is() 或 errors.as() 函数检查错
如何在 Golang 中使用自定义错误类型?
2024-05-14

对自定义错误类型分类是否有一种标准方法

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《对自定义错误类型分类是否有一种标准方法》,就带大家讲解一下知识点,若是你对本
对自定义错误类型分类是否有一种标准方法
2024-04-05

java错误找不到符号解决方法(引用自定义类)

通常情况下,我们在编写java文件时,会有引用到自已定义的一些类,如果按通常的javac *.java的形式来编译会出现找不到符号的错误。(推荐:java视频教程)以下提供了两种方法,以供参考假如在d:/web/wsh下有a.java和b.java两个文件,在
java错误找不到符号解决方法(引用自定义类)
2018-09-21

java自定义错误页面实现方法

java后台自定义错误页面:(推荐:java视频教程)java后台项目中,经常会出现404或500等错误,如果不做设置,服务器会默认返回404或500的错误页面给前端显示错误页面。掌握了错误页面设置,就可以根据业务需要自定义404或500错误页面。实现原理:当
java自定义错误页面实现方法
2019-01-29

Gorm 在自定义字符串类型上返回扫描仪错误

php小编香蕉介绍:在Gorm中,当你尝试在自定义的字符串类型上进行扫描操作时,可能会遇到错误。这个问题可能会导致扫描仪无法正确解析字符串,从而导致程序出错。这是因为Gorm默认使用`Scan`方法来扫描字符串类型的字段,但对于自定义的字符
Gorm 在自定义字符串类型上返回扫描仪错误
2024-02-11

SpringBoot自定义错误处理逻辑详解

这篇文章主要介绍了SpringBoot自定义错误处理逻辑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2022-11-13

Go错误:无法在没有实例化的情况下使用泛型类型

php小编苹果今天要和大家分享的是关于Go语言中的一个错误:无法在没有实例化的情况下使用泛型类型。在Go语言中,泛型是一种非常强大的特性,可以让我们编写更加通用和灵活的代码。然而,有时候我们可能会遇到一个问题,就是在没有实例化的情况下无法使
Go错误:无法在没有实例化的情况下使用泛型类型
2024-02-09

JSON 对象未定义错误的解决方法

要解决 JSON 对象未定义的错误,可以尝试以下几种方法:1. 确保引入了正确的 JSON 库: 在 JavaScript 中,要操作 JSON 对象,需要引入 JSON 库。确保你在代码中正确地引入了 JSON 库,例如在 HTML 文件
2023-08-15

JavaScript 错误对象:深入了解类型及其含义

JavaScript 错误对象:深入理解类型及其含义
JavaScript 错误对象:深入了解类型及其含义
2024-03-05

go-jwt 令牌验证错误 - 令牌签名无效:密钥类型无效

php小编子墨在使用go-jwt进行令牌验证时,可能会遇到错误信息:"令牌签名无效:密钥类型无效"。这个错误是由于令牌的签名与密钥类型不匹配所引起的。令牌签名是验证令牌的重要组成部分,密钥类型则指定了用于生成和验证签名的算法。要解决这个问题
go-jwt 令牌验证错误 - 令牌签名无效:密钥类型无效
2024-02-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录