
错误码
errors.Wrap和%w仅支持链式包装,无法携带错误码、HTTP状态码等业务语义;需定义AppError结构体封装Code/Message/Err,并实现Is/Unwrap方法,配合错误码注册表与...
gRPC错误必须用status.Error()包装才能正确传递,否则调用方收到codes.Unknown;应映射到标准codes.XXX,用status.FromError()解包并依据st.Code...
GeolocationAPI必须在HTTPS或localhost下调用,且需用户手势触发;HTTP环境静默失败,自动调用无权限弹窗;options中enableHighAccuracy、timeout...
必须区分业务错误和系统错误:业务错误用自定义BizError结构体实现error接口并设唯一错误码,系统错误复用标准库错误;用errors.Is/errors.As判断而非字符串匹配;包装错误需克制且...
不能只用errors.New或fmt.Errorf,因其导致错误信息分散、无法区分业务/系统错误、下游难判断类型或映射错误码、日志缺上下文;应定义全局错误变量并使用自定义Error类型统一管理。
应捕获错误码1213并实现指数退避重试,统一多表更新顺序,按主键升序加锁,用INSERT...ONDUPLICATEKEYUPDATE替代先查后改,避免事务中耗时操作,必要时用存储过程封装重试逻辑。
std::expected是C++23引入的值语义错误处理工具,本质是std::variant的封装,适合替代错误码而非异常,用于需显式传播错误但禁用异常的场景(如嵌入式、系统调用),不适用于需栈展开...
绝大多数微服务场景下panic不该recover,尤其HTTP/gRPC中主动recover是反模式;仅插件加载等沙箱场景需recover并记录堆栈返回500;启动期panic应os.Exit(1)。
Go中error接口不带错误码,需用结构体封装并实现Error()和Unwrap()方法以支持errors.Is/As;Code应用常量定义,HTTP响应和日志需统一处理错误码与原始错误。
TinyXML2是C++中轻量易用的XML解析库,支持加载、遍历、读取属性/文本、数值转换及生成XML;使用时需检查错误码、注意空指针、循环遍历同名元素,并确保UTF-8编码。