From f32cf027144292d357b555897dc42706efed68c1 Mon Sep 17 00:00:00 2001 From: feitianbubu Date: Tue, 22 Jul 2025 11:40:43 +0800 Subject: [PATCH] fix: avoid relayError nil panic --- types/error.go | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/types/error.go b/types/error.go index 5c8b37d2..c301e59c 100644 --- a/types/error.go +++ b/types/error.go @@ -105,23 +105,25 @@ func (e *NewAPIError) SetMessage(message string) { func (e *NewAPIError) ToOpenAIError() OpenAIError { switch e.ErrorType { case ErrorTypeOpenAIError: - return e.RelayError.(OpenAIError) + if openAIError, ok := e.RelayError.(OpenAIError); ok { + return openAIError + } case ErrorTypeClaudeError: - claudeError := e.RelayError.(ClaudeError) - return OpenAIError{ - Message: e.Error(), - Type: claudeError.Type, - Param: "", - Code: e.errorCode, - } - default: - return OpenAIError{ - Message: e.Error(), - Type: string(e.ErrorType), - Param: "", - Code: e.errorCode, + if claudeError, ok := e.RelayError.(ClaudeError); ok { + return OpenAIError{ + Message: e.Error(), + Type: claudeError.Type, + Param: "", + Code: e.errorCode, + } } } + return OpenAIError{ + Message: e.Error(), + Type: string(e.ErrorType), + Param: "", + Code: e.errorCode, + } } func (e *NewAPIError) ToClaudeError() ClaudeError { @@ -162,8 +164,11 @@ func NewOpenAIError(err error, errorCode ErrorCode, statusCode int) *NewAPIError func NewErrorWithStatusCode(err error, errorCode ErrorCode, statusCode int) *NewAPIError { return &NewAPIError{ - Err: err, - RelayError: nil, + Err: err, + RelayError: OpenAIError{ + Message: err.Error(), + Type: string(errorCode), + }, ErrorType: ErrorTypeNewAPIError, StatusCode: statusCode, errorCode: errorCode,