标签: error-handling
与该标签相关的所有文章 "error-handling".
-
axum(三):中间件与生产实践-tower 原生的 Web 应用
axum 不发明中间件系统——Router::layer() 直接接受任何 tower::Layer。tower-http 的 Trace/Compression/CORS/Timeout 全部开箱即用。from_fn 让你用普通 async 函数写中间件而不需要实现 Service + Layer。注意 .layer() 只影响它之前添加的路由,顺序是洋葱模型(后加的在外层)。
-
Go 基础:错误处理与 Errors Are Values
Go 将错误视为普通值(error 是一个只含 Error() string 方法的 interface),通过多返回值强制调用者显式处理,而非像 Java/Python 那样用异常机制隐式传播。Go 1.13 引入 error wrapping(%w、errors.Is、errors.As),Go 1.20 引入 errors.Join 支持多错误合并。这套机制的核心优势是:控制流可见、错误可编程、无隐式传播。代价是 if err != nil 样板代码多,但 Go 团队已于 2025 年 6 月正式宣布不再追求语法层面的错误处理变更。