fix: throw error when translate language detection failed (#9393)

* docs(ApiService): 为语言检测函数添加详细注释并修改错误处理

移除冗余的try-catch块,改为依赖shouldThrow参数控制错误抛出

* fix(翻译动作): 添加语言检测错误处理

捕获语言检测时的异常并记录错误日志,防止未处理的异常导致应用崩溃

* docs(ApiService): 修正语言检测函数的返回注释说明

原注释说明检测失败会返回空字符串,实际实现会抛出错误,修正注释以反映实际行为

* fix: 移除语言检测中多余的或空字符串检查
This commit is contained in:
Phantom 2025-08-22 00:05:04 +08:00 committed by GitHub
parent c7dcbdcb5b
commit 44b2d09e63
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 7 deletions

View File

@ -615,6 +615,14 @@ interface FetchLanguageDetectionProps {
onResponse?: (text: string, isComplete: boolean) => void
}
/**
*
* @param params -
* @param {string} params.text -
* @param {function} [params.onResponse] - ,
* @returns {Promise<string>} ,
* @throws {Error}
*/
export async function fetchLanguageDetection({ text, onResponse }: FetchLanguageDetectionProps) {
const translateLanguageOptions = await getTranslateOptions()
const listLang = translateLanguageOptions.map((item) => item.langCode)
@ -661,16 +669,13 @@ export async function fetchLanguageDetection({ text, onResponse }: FetchLanguage
assistant,
streamOutput: stream,
enableReasoning: false,
shouldThrow: true,
onResponse
}
const AI = new AiProvider(provider)
try {
return (await AI.completions(params)).getText() || ''
} catch (error: any) {
return ''
}
return (await AI.completions(params)).getText()
}
export async function fetchMessagesSummary({ messages, assistant }: { messages: Message[]; assistant: Assistant }) {

View File

@ -9,7 +9,7 @@ import { useSettings } from '@renderer/hooks/useSettings'
import useTranslate from '@renderer/hooks/useTranslate'
import MessageContent from '@renderer/pages/home/Messages/MessageContent'
import { getDefaultTopic, getDefaultTranslateAssistant } from '@renderer/services/AssistantService'
import { Assistant, Topic, TranslateLanguage } from '@renderer/types'
import { Assistant, Topic, TranslateLanguage, TranslateLanguageCode } from '@renderer/types'
import type { ActionItem } from '@renderer/types/selectionTypes'
import { runAsyncFunction } from '@renderer/utils'
import { abortCompletion } from '@renderer/utils/abortController'
@ -114,7 +114,15 @@ const ActionTranslate: FC<Props> = ({ action, scrollToBottom }) => {
setIsLoading(true)
const sourceLanguageCode = await detectLanguage(action.selectedText)
let sourceLanguageCode: TranslateLanguageCode
try {
sourceLanguageCode = await detectLanguage(action.selectedText)
} catch (err) {
onError(err instanceof Error ? err : new Error('An error occurred'))
logger.error('Error detecting language:', err as Error)
return
}
let translateLang: TranslateLanguage