Golangfmt.Errorf格式化错误信息完整示例

答案:fmt.Errorf用于创建格式化错误,支持变量插入和错误包装。示例中divide函数用fmt.Errorf返回除零错误,输出“无法除以零:a=10, b=0”;Go 1.13+支持%w包装错误,readFile和processFile形成错误链,errors.Is可判断原始错误“权限不足”;自定义错误类型ValidationError结合fmt.Errorf可构造结构化错误信息。

golangfmt.errorf格式化错误信息完整示例

在 Go 语言中,fmt.Errorf 是创建带有格式化信息的错误的常用方式。它允许你像使用 fmt.Printf 一样构造错误消息,同时返回一个 error 类型。

基本用法:使用 fmt.Errorf 构造简单错误

最常见的情况是将变量值嵌入错误消息中,便于调试和日志记录。

package mainimport (    "fmt")func divide(a, b int) (int, error) {    if b == 0 {        return 0, fmt.Errorf("无法除以零:a=%d, b=%d", a, b)    }    return a / b, nil}func main() {    _, err := divide(10, 0)    if err != nil {        fmt.Println("错误:", err)    }}

输出:
错误: 无法除以零:a=10, b=0

嵌套错误(Go 1.13+):使用 %w 包装错误

从 Go 1.13 开始,fmt.Errorf 支持使用 %w 动词来包装原始错误,这样可以保留错误链,便于后续用 errors.Is 和 errors.As 判断。

package mainimport (    "errors"    "fmt")func readFile(filename string) error {    if filename == "" {        return fmt.Errorf("文件名不能为空")    }    return fmt.Errorf("读取文件失败: %w", errors.New("权限不足"))}func processFile() error {    return fmt.Errorf("处理文件时出错: %w", readFile(""))}func main() {    err := processFile()    fmt.Println("错误:", err)    // 判断是否包含特定错误    if errors.Is(err, errors.New("权限不足")) {        fmt.Println("原始错误是 '权限不足'")    }}

输出:
错误: 处理文件时出错: 读取文件失败: 权限不足
原始错误是 ‘权限不足’

结合自定义错误类型使用

你也可以在自定义错误结构中使用 fmt.Errorf 来生成更丰富的错误信息。

立即学习“go语言免费学习笔记(深入)”;

package mainimport (    "fmt")type ValidationError struct {    Field string    Msg   string}func (e *ValidationError) Error() string {    return fmt.Sprintf("验证错误:字段 %s, 原因: %s", e.Field, e.Msg)}func validateAge(age int) error {    if age < 0 {        return fmt.Errorf("年龄无效: %d, %w", age, &ValidationError{"Age", "不能为负数"})    }    return nil}func main() {    err := validateAge(-5)    if err != nil {        fmt.Println(err)    }}

输出:
年龄无效: -5, 验证错误:字段 Age, 原因: 不能为负数

基本上就这些。fmt.Errorf 简单但强大,合理使用 %w 可以构建清晰的错误链,对调试和错误处理非常有帮助。

以上就是Golangfmt.Errorf格式化错误信息完整示例的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1402867.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Golangerror包装与链式调用使用示例
上一篇 2025年12月15日 19:04:47
GolangTCP服务器并发处理连接方法
下一篇 2025年12月15日 19:04:53

相关推荐

  • 163邮箱登录官网路径 163邮箱登录顺畅入口

    163邮箱登录官网路径 163邮箱登录顺畅入口163邮箱登录官网路径 163邮箱登录顺畅入口163邮箱登录官网路径 163邮箱登录顺畅入口163邮箱登录官网路径 163邮箱登录顺畅入口

    163邮箱登录官网路径为https://mail.163.com,支持网页、手机智能版、网易邮箱大师扫码及电脑客户端多端同步登录,结合安全验证机制与功能集成优势,提供顺畅、安全、高效的邮件管理体验。 163邮箱登录官网路径在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来163邮箱登录顺畅入…

    2026年9月25日 • 用户投稿
    1000
  • Debian Node.js 日志备份与恢复策略

    Debian Node.js 日志备份与恢复策略Debian Node.js 日志备份与恢复策略Debian Node.js 日志备份与恢复策略Debian Node.js 日志备份与恢复策略

    为了保障 Debian 系统中 Node.js 应用的日志安全,本文提供一套完整的日志备份与恢复策略,确保系统故障或数据丢失时能够快速恢复。 一、日志备份 1.1 定期备份:利用 rsync rsync 是一款强大的文件同步工具,可实现日志文件的定期备份: # 创建备份目录mkdir -p /bac…

    2026年9月25日 • 用户投稿
    100
  • 通过索引访问 LinkedHashMap 的值

    通过索引访问 LinkedHashMap 的值通过索引访问 LinkedHashMap 的值通过索引访问 LinkedHashMap 的值通过索引访问 LinkedHashMap 的值

    通过索引访问 LinkedHashMap 的值 本文将探讨如何比较两个 LinkedHashMap 中具有相同键的值,并提供一种有效的解决方案。LinkedHashMap 是一种可以保持插入顺序的 Map 实现,但它并不支持像 List 那样通过索引直接访问元素。因此,当我们需要比较两个 Linke…

    2026年9月25日 • 用户投稿
    1100
  • 谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换

    谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换

    据外媒android authority消息,谷歌正为android系统研发一项类似苹果“continuity/handoff”的跨设备任务延续功能。目前,相关线索已在google play服务的代码中被多次发现。 苹果的“Handoff”功能允许用户将iPhone上正在进行的操作——例如浏览网页或…

    2026年9月25日 • 用户投稿
    500
  • 如何使用Keras快速构建模型 Keras神经网络搭建入门教程

    如何使用Keras快速构建模型 Keras神经网络搭建入门教程如何使用Keras快速构建模型 Keras神经网络搭建入门教程如何使用Keras快速构建模型 Keras神经网络搭建入门教程如何使用Keras快速构建模型 Keras神经网络搭建入门教程

    使用 keras 快速搭建神经网络模型需掌握以下步骤:1. 安装 keras 并确认后端环境,推荐通过 tensorflow.keras 导入模块;2. 使用 sequential 模型堆叠层,定义输入形状、神经元数量和激活函数;3. 编译模型时选择合适的损失函数、优化器和评估指标;4. 准备数据并…

    2026年9月25日 • 用户投稿
    000
  • 鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相

    鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相

    9月26日,2025 harmonyos connect伙伴峰会在深圳盛大举行,现场集中展示了鸿蒙生态下的最新智能硬件成果,涵盖全屋智能、智能安防等多个领域。其中,鸿蒙智选携手海雀推出的全新智能摄像头系列成为焦点,三款旗舰新品——雀蛋pro、雀蛋max(ai大模型升级版),以及行业首创的“双镜头四云…

    2026年9月25日 • 用户投稿
    000
  • sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法

    sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法

    Sublime Text可通过插件与Docker集成实现编译运行。1. 安装Terminus和Build Systems插件;2. 项目根目录创建Dockerfile定义环境;3. 配置自定义构建系统调用docker build和run命令;4. 可选使用Terminus面板查看输出,注意路径映射与…

    2026年9月25日 • 用户投稿
    700
  • 通过索引获取 LinkedHashMap 的值?解决方案与最佳实践

    通过索引获取 LinkedHashMap 的值?解决方案与最佳实践通过索引获取 LinkedHashMap 的值?解决方案与最佳实践通过索引获取 LinkedHashMap 的值?解决方案与最佳实践通过索引获取 LinkedHashMap 的值?解决方案与最佳实践

    本文旨在解决如何比较两个 LinkedHashMap 中具有相同键(chargeTypeName)的值的问题。由于 LinkedHashMap 本身不支持通过索引直接访问,文章将探讨如何利用流(Stream)和分组(Grouping)等技术,有效地找出两个 LinkedHashMap 中键相同的值对…

    2026年9月25日 • 用户投稿
    100
  • MiniCPM-V 4.5— 面壁智能开源的端侧多模态模型

    MiniCPM-V 4.5— 面壁智能开源的端侧多模态模型MiniCPM-V 4.5— 面壁智能开源的端侧多模态模型MiniCPM-V 4.5— 面壁智能开源的端侧多模态模型MiniCPM-V 4.5— 面壁智能开源的端侧多模态模型

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 百川大模型 百川智能公司推出的一系列大型语言模型产品 62 查看详情 MiniCPM-V 4.5是什么 minicpm-v 4.5是面壁智能推出的端侧多模态模型,拥有8b参数。模型在图片、视频、…

    2026年9月25日 • 用户投稿
    000
  • Debian系统如何配置Golang日志级别

    Debian系统如何配置Golang日志级别Debian系统如何配置Golang日志级别Debian系统如何配置Golang日志级别Debian系统如何配置Golang日志级别

    在debian系统上配置golang应用的日志级别,需要遵循以下步骤: 选择日志库: 首先,选择合适的日志库。Go标准库的log包功能简单,而第三方库如logrus和zap则提供更强大的功能和性能。 设置日志级别: 根据所选日志库,设置相应的日志级别。不同库的设置方法有所不同。 使用标准库log G…

    2026年9月25日 • 用户投稿
    100
  • Rokid 开启海外众筹 或破 AI 眼镜最高筹款记录 9 月开售

    Rokid 开启海外众筹 或破 AI 眼镜最高筹款记录 9 月开售Rokid 开启海外众筹 或破 AI 眼镜最高筹款记录 9 月开售Rokid 开启海外众筹 或破 AI 眼镜最高筹款记录 9 月开售Rokid 开启海外众筹 或破 AI 眼镜最高筹款记录 9 月开售

    据 cnmo 消息,rokid 即将在美国纽约曼哈顿举行 rokid glasses 的海外发布会,当天还将同步启动该产品在 kickstarter 平台的国际众筹项目。目前,rokid 已通过海外社交媒体等渠道展开预热宣传,相关产品信息也已上线 kickstarter 官网。行业预测认为,本次 r…

    2026年9月25日 • 用户投稿
    900
  • 如何优化Debian上Golang日志的输出速度

    如何优化Debian上Golang日志的输出速度如何优化Debian上Golang日志的输出速度如何优化Debian上Golang日志的输出速度如何优化Debian上Golang日志的输出速度

    本文探讨在Debian系统上如何优化Golang应用的日志输出速度,提升系统效率。主要策略如下: 高效日志库的选择: 优先选择高性能的日志库,例如zap或logrus,它们通常比标准库log性能更优。 精简日志级别: 根据实际需求调整日志级别(debug、info、warn、error等)。开发环境…

    2026年9月25日 • 用户投稿
    900
  • VSCode 怎样设置编辑器的字体连写效果 VSCode 字体连写效果的创意设置教程​

    要让vscode支持字体连写,需先安装支持连写的字体如fira code,再在settings.json中配置”editor.fontfamily”并将”editor.fontligatures”设为true,最后重启vscode验证效果;若不生效,检…

    2026年9月25日
    1300
  • 使用 Jackson 进行复杂类的自定义反序列化

    使用 Jackson 进行复杂类的自定义反序列化使用 Jackson 进行复杂类的自定义反序列化使用 Jackson 进行复杂类的自定义反序列化使用 Jackson 进行复杂类的自定义反序列化

    本文介绍了如何使用 Jackson 库对包含复杂嵌套类的 JSON 字符串进行自定义反序列化。通过 ObjectMapper 的 readValue 方法可以实现简单场景下的自动反序列化。针对需要定制化处理的场景,可以结合 ObjectMapper 和自定义反序列化器来实现更灵活的反序列化逻辑,并提…

    2026年9月25日 • 用户投稿
    1000
  • sublime怎么使用命令面板(command palette)_sublime命令面板使用与快捷命令说明

    sublime怎么使用命令面板(command palette)_sublime命令面板使用与快捷命令说明sublime怎么使用命令面板(command palette)_sublime命令面板使用与快捷命令说明sublime怎么使用命令面板(command palette)_sublime命令面板使用与快捷命令说明sublime怎么使用命令面板(command palette)_sublime命令面板使用与快捷命令说明

    命令面板是Sublime Text高效操作核心,通过Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS)打开,输入关键词如theme、syntax、package可快速执行更换主题、设置语法、安装插件等命令,支持动态搜索与回车执行,结合常用命令如设置修改、快捷键调整、…

    2026年9月25日 • 用户投稿
    500
  • 天猫行业标准有哪些?如何分析行业数据?详解天猫四大行业标准体系!

    天猫行业标准有哪些?如何分析行业数据?详解天猫四大行业标准体系!天猫行业标准有哪些?如何分析行业数据?详解天猫四大行业标准体系!天猫行业标准有哪些?如何分析行业数据?详解天猫四大行业标准体系!天猫行业标准有哪些?如何分析行业数据?详解天猫四大行业标准体系!

    在天猫这个日活破亿的电商主战场中,行业规范是入场门槛,数据运营则是突围关键。目前天猫已构建起覆盖商品品质、服务响应、营销合规与物流履约的四大标准框架,并依托直通车、生意参谋等工具打造了全链路的数据分析体系。本文将深入解读天猫核心规则,并结合真实案例展示如何借助多维数据提升店铺竞争力。 一、天猫四大核…

    2026年9月25日 • 用户投稿
    700
  • 如何通过Golang日志诊断Debian网络问题

    如何通过Golang日志诊断Debian网络问题如何通过Golang日志诊断Debian网络问题如何通过Golang日志诊断Debian网络问题如何通过Golang日志诊断Debian网络问题

    本文介绍如何利用Golang日志机制在Debian系统中高效诊断网络问题。我们将探讨几种实用方法,帮助您快速定位并解决网络连接故障。 一、日志记录 标准库log包: Golang的log包是记录网络请求和响应细节的理想选择。 在发送请求前后添加日志,可以清晰地追踪请求的发送和接收过程。以下是一个简单…

    2026年9月25日 • 用户投稿
    000
  • 松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀

    松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀松下携全场景智慧生活方案亮相第四届数贸会旗舰洗护新品首秀

    第四届全球数字贸易博览会(以下简称“数贸会”)于2025年9月25日在杭州大会展中心隆重启幕。松下电器以“百年匠心 智慧怡居”为主题,携全系列住空间家电产品及创新互动体验登陆8号馆智慧空间展区,通过场景化展陈展示数字技术驱动下的高品质生活解决方案,并联动松下商城打造多元互动模式,推动数字贸易与消费体…

    2026年9月25日 • 用户投稿
    200
  • 豆包AI如何调用外部API 实现AI与第三方服务联动的方法

    本文旨在探讨豆包AI如何通过调用外部API,从而实现与第三方服务的智能联动。我们将详细介绍实现这一功能的核心原理以及具体的操作步骤。通过理解API调用的机制并在豆包AI中进行相应的配置,用户可以赋予豆包AI连接互联网世界、获取实时信息、执行特定任务的能力,极大地扩展了AI的应用场景和智能化水平。文章…

    2026年9月25日
    000
  • 快手直播间怎么装修_快手直播间装修的实用方法与建议

    快手直播间怎么装修_快手直播间装修的实用方法与建议快手直播间怎么装修_快手直播间装修的实用方法与建议快手直播间怎么装修_快手直播间装修的实用方法与建议快手直播间怎么装修_快手直播间装修的实用方法与建议

    明确直播主题、优化灯光布局、设计简洁背景墙、合理规划功能区及改善声网环境是提升快手直播间专业度的关键。首先根据内容类型确定风格,如美妆选柔和色调,游戏用科技感灯光;参考热门主播布置并保持视觉统一。主光源采用4500K环形灯,辅以侧补光和背景灯带增强层次。背景选用低饱和纯色墙,搭配品牌LOGO或绿植,…

    2026年9月25日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信