refactor(tts): 删除 errorsx 包,使用标准库错误处理

## 变更内容

### 1. 删除 errorsx 包
- 删除 pkg/errorsx/handler.go(未使用)
- 删除 pkg/errorsx/error.go(无意义的常量)

### 2. 使用标准库错误处理
- 移除 "game-driver/pkg/errorsx" 导入
- 用 fmt.Errorf 替换所有 errorsx.XxxErr
- 错误信息更清晰,保留完整上下文

### 3. 改进前后对比
```go
// 之前
return errorsx.ThirdPartyErr  //  上下文丢失

// 现在
return fmt.Errorf("获取Token失败: %s", resultMessage.ErrMsg)  //  完整上下文
```

## 优势
 错误信息包含完整上下文
 减少一个自定义包
 使用标准库,更优雅
 代码行数减少:166 → 161 行

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-08 14:10:41 +08:00
parent e4c34f0eec
commit bee3b98798
3 changed files with 6 additions and 77 deletions

View File

@@ -1,9 +0,0 @@
package errorsx
import "errors"
var DriverTimeoutErr = errors.New("处理超时")
var DriverCancelErr = errors.New("系统取消")
var ThirdPartyErr = errors.New("第三方请求异常")

View File

@@ -1,57 +0,0 @@
package errorsx
import (
"fmt"
"go.uber.org/zap"
"runtime/debug"
)
// ErrorHandler 错误处理接口
type ErrorHandler interface {
HandleError(error, string)
}
// DefaultHandler 默认错误处理器
type DefaultHandler struct{}
// HandleError 处理错误并记录日志
func (h *DefaultHandler) HandleError(err error, context string) {
if err == nil {
return
}
// 记录错误信息和调用栈
zap.S().Errorw(
fmt.Sprintf("%s: %v", context, err),
"stack", string(debug.Stack()),
)
}
// Wrap 错误包装,保留调用链
func Wrap(err error, message string) error {
if err == nil {
return nil
}
return fmt.Errorf("%s: %w", message, err)
}
// Must panic 如果 err 不为 nil
func Must(err error, message string) {
if err != nil {
panic(fmt.Sprintf("%s: %v", message, err))
}
}
// LogError 记录错误但不中断
func LogError(err error, context string) {
if err != nil {
zap.S().Errorw(fmt.Sprintf("%s: %v", context, err))
}
}
// LogWarn 记录警告
func LogWarn(err error, context string) {
if err != nil {
zap.S().Warnw(fmt.Sprintf("%s: %v", context, err))
}
}

View File

@@ -7,7 +7,6 @@ import (
"game-driver/config" "game-driver/config"
"game-driver/leaf" "game-driver/leaf"
"game-driver/pkg/audio" "game-driver/pkg/audio"
"game-driver/pkg/errorsx"
"go.uber.org/zap" "go.uber.org/zap"
"io" "io"
"log" "log"
@@ -92,8 +91,7 @@ func (tts *AliTTS) getToken() error {
} }
if resultMessage.ErrMsg != "" { if resultMessage.ErrMsg != "" {
zap.S().Errorf("[TTS] 获取Token失败: %s", resultMessage.ErrMsg) return fmt.Errorf("获取Token失败: %s", resultMessage.ErrMsg)
return errorsx.ThirdPartyErr
} }
tts.tokenResult = resultMessage.TokenResult tts.tokenResult = resultMessage.TokenResult
@@ -135,26 +133,23 @@ func (tts *AliTTS) Get(ctx context.Context, text string) (io.Reader, error) {
return ttsData.Data, err return ttsData.Data, err
} }
// 等待合成完成(带超时) // 等待合成完成
select { select {
case done := <-ch: case done := <-ch:
if !done { if !done {
zap.S().Error("[TTS] 合成失败: done=false") return ttsData.Data, fmt.Errorf("TTS合成失败")
return ttsData.Data, errorsx.ThirdPartyErr
} }
size := ttsData.Data.(*bytes.Buffer).Len() size := ttsData.Data.(*bytes.Buffer).Len()
if size == 0 { if size == 0 {
zap.S().Error("[TTS] 合成数据为空") return ttsData.Data, fmt.Errorf("TTS合成数据为空")
return ttsData.Data, errorsx.ThirdPartyErr
} }
return ttsData.Data, nil return ttsData.Data, nil
case <-time.After(time.Duration(tts.Timeout) * time.Second): case <-time.After(time.Duration(tts.Timeout) * time.Second):
zap.S().Errorf("[TTS] 合成超时: %s", text) return ttsData.Data, fmt.Errorf("TTS合成超时")
return ttsData.Data, errorsx.DriverTimeoutErr
case <-ctx.Done(): case <-ctx.Done():
return ttsData.Data, errorsx.DriverCancelErr return ttsData.Data, fmt.Errorf("请求被取消")
} }
} }