错误处理
已收录文章:41篇
-
Go 的 sync 包双返回值 Once 辅助函数不只是把初始化代码执行一次,还会把第一次返回的值和错误一起缓存。本文用并发初始化配置的场景说明它与普通 Once 的边界。499 收藏
-
用一个分页读取场景说明 Go 1.23 range over function 的提前停止语义,拆开 yield 返回 false、错误保存和调用方收尾之间的边界,给出可运行的 iter.Seq 示例与验收方法。497 收藏
-
Golang try catch 虽然在使用Golang的时候发现没有try catch这种错误处理机制但是想一想golang作为一门优雅的语言,似乎也是情理之中。因为在java中 throws在函数签名中有一个关键字,旨在使异常流程489 收藏
-
引言 Go 的错误处理一直是表现最突出的一块地方,许许多多的同学都提出了各种提案,例如:引入 try-catch、用 panic 代替 if err != nil、引入新的关键字等。但这些都被一一驳回了。 不过社区依然483 收藏
-
当一个 HTTP 请求体里连续放着多个 JSON 值时,json.Unmarshal 只能处理单个完整值。本文用 json.Decoder 循环读取连续 JSON,区分正常 EOF、语法错误和尾部脏数据,并给出请求体大小限制、空白字符和资源关闭的检查方法。458 收藏
-
自定义 http.RoundTripper 做重试时,真正容易出错的不是循环次数,而是请求体能否重放、方法是否幂等以及错误如何返回。本文用一个可运行的重试 Transport 拆开这三个边界。457 收藏
-
一、defer 1. defer保证在函数结束时发生. 2. defer列表为先进后出 3. 参数在defer语句时计算. 下面来看一个例子: 写入文件 package main import ( "aaa/functional/fbi" "bufio" "fmt" "os" ) // 我要写文451 收藏
-
前言 在 Go 语言程序开发中,goroutine 的使用是比较频繁的,因此在日常编码的时候 goroutine 里的错误处理,怎么做会比较好呢? 一般我们的业务代码如下: func main() { var wg sync.WaitGroup wg.Add(2)445 收藏
-
Go 1.20 的 errors.Join 可以把多条错误合并为一个错误值,同时保留 errors.Is 和 errors.As 的判断能力。本文用批量关闭资源、并行任务汇总等场景说明该怎么用,以及哪些时候不该把错误一股脑拼在一起。431 收藏
-
context.Err 只能告诉调用方请求已取消或超时,context.Cause 才能保留触发取消的具体原因。本文用一个可运行的 Go 示例说明 WithCancelCause、Cause 和 Err 的关系,以及父子 context 竞争取消时的边界。428 收藏
-
Golang · Go问答 | 2个月前 | 错误处理 · go · 性能 · bytes.Buffer · Go 1.26 · io.EOF 版本迁移 Go 1.26 bytes.Buffer.Peek 缓冲区预览Go 1.26 为 bytes.Buffer 增加 Peek 方法,可以在不推进读取位置的前提下预览前 N 个字节。本文对比 Next 和 Peek 的行为,说明 io.EOF、切片有效期、旧工具链兼容与测试边界。428 收藏
-
本文用订单查询场景,演示 Go 中如何用 fmt.Errorf 包装错误、用 errors.Is/As 判断根因和业务错误码,并在 HTTP 层统一返回清晰响应。413 收藏