package main import ( "errors" "fmt" ) // 哨兵错误 var ( ErrCacheOffline = errors.New("cache offline") ErrRequestTimeout = errors.New("request timeout") ) func main() { fmt.Println("===== 错误处理模式 =====") // 1. 快速失败 if err := errors.New("config load failed"); err != nil { // 测试后面的把这一行 log.Fatalln 注释掉 // log.Fatalln("快速失败:服务启动终止 ->", err) } // 2. 服务降级 cacheErr := fmt.Errorf("get data failed: %w", ErrCacheOffline) if errors.Is(cacheErr, ErrCacheOffline) { fmt.Println("降级策略:缓存故障,使用数据库默认数据") } // 3. 容错忽略 fmt.Println("容错处理:埋点上报失败,忽略不影响主流程") }