32 lines
734 B
Go
32 lines
734 B
Go
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("容错处理:埋点上报失败,忽略不影响主流程")
|
|
}
|