Merge branch 'main' of 47.107.44.202:xionglijia/18xchat
# Conflicts: # assets/Scripts/chat18x/core/ChatAIService.ts # assets/Scripts/chat18x/utils/ErrorHandler.ts # xchat_cfg
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
|
||||
import LanguageUtils from "../../Main/Common/LanguageUtils";
|
||||
import { TipsPanel } from "../ui/panels/TipsPanel";
|
||||
import { logger } from "db://assets/Scripts/Main/Common/Logger";
|
||||
|
||||
export enum ErrorType {
|
||||
/** API调用错误 */
|
||||
@@ -158,54 +159,6 @@ export class ErrorHandler {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录错误到内部日志
|
||||
*/
|
||||
private logError(errorInfo: ErrorInfo): void {
|
||||
this.errorLog.push(errorInfo);
|
||||
|
||||
// 限制日志大小
|
||||
if (this.errorLog.length > this.MAX_LOG_SIZE) {
|
||||
this.errorLog.shift();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出错误到控制台
|
||||
*/
|
||||
private logToConsole(errorInfo: ErrorInfo): void {
|
||||
const logMessage = `[${errorInfo.type}] ${errorInfo.message}`;
|
||||
|
||||
switch (errorInfo.type) {
|
||||
case ErrorType.API_ERROR:
|
||||
case ErrorType.NETWORK_ERROR:
|
||||
console.error(logMessage, errorInfo.details);
|
||||
break;
|
||||
case ErrorType.VALIDATION_ERROR:
|
||||
console.warn(logMessage, errorInfo.details);
|
||||
break;
|
||||
default:
|
||||
console.log(logMessage, errorInfo.details);
|
||||
}
|
||||
|
||||
// 如果有堆栈信息,也输出
|
||||
if (errorInfo.stack) {
|
||||
console.error("Stack trace:", errorInfo.stack);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 向用户显示友好的错误信息
|
||||
*/
|
||||
private showUserFriendlyError(errorInfo: ErrorInfo): void {
|
||||
let userMessage: string;
|
||||
|
||||
TipsPanel.show(LanguageUtils.getText("chat_error_code_2005"));
|
||||
|
||||
// TODO: 这里应该显示UI提示,比如Toast或对话框
|
||||
console.log("用户提示:", userMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取错误日志
|
||||
*/
|
||||
@@ -229,14 +182,65 @@ export class ErrorHandler {
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否有未处理的关键错误
|
||||
* 记录错误到内部日志
|
||||
*/
|
||||
public hasCriticalErrors(): boolean {
|
||||
const criticalTypes = [ErrorType.API_ERROR, ErrorType.CONFIG_ERROR];
|
||||
return this.errorLog.some(
|
||||
(error) =>
|
||||
criticalTypes.includes(error.type) &&
|
||||
Date.now() - error.timestamp < 60000 // 1分钟内的错误
|
||||
);
|
||||
private logError(errorInfo: ErrorInfo): void {
|
||||
this.errorLog.push(errorInfo);
|
||||
|
||||
// 限制日志大小
|
||||
if (this.errorLog.length > this.MAX_LOG_SIZE) {
|
||||
this.errorLog.shift();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出错误到控制台
|
||||
*/
|
||||
private logToConsole(errorInfo: ErrorInfo): void {
|
||||
const logMessage = `[${errorInfo.type}] ${errorInfo.message}`;
|
||||
|
||||
switch (errorInfo.type) {
|
||||
case ErrorType.API_ERROR:
|
||||
case ErrorType.NETWORK_ERROR:
|
||||
logger.error(logMessage, errorInfo.details);
|
||||
break;
|
||||
case ErrorType.VALIDATION_ERROR:
|
||||
logger.warn(logMessage, errorInfo.details);
|
||||
break;
|
||||
default:
|
||||
logger.log(logMessage, errorInfo.details);
|
||||
}
|
||||
|
||||
// 如果有堆栈信息,也输出
|
||||
if (errorInfo.stack) {
|
||||
logger.error("Stack trace:", errorInfo.stack);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 向用户显示友好的错误信息
|
||||
*/
|
||||
private showUserFriendlyError(errorInfo: ErrorInfo): void {
|
||||
let userMessage: string;
|
||||
|
||||
switch (errorInfo.type) {
|
||||
case ErrorType.API_ERROR:
|
||||
userMessage = "AI服务暂时不可用,请稍后再试";
|
||||
break;
|
||||
case ErrorType.NETWORK_ERROR:
|
||||
userMessage = "网络连接失败,请检查网络设置";
|
||||
break;
|
||||
case ErrorType.CONFIG_ERROR:
|
||||
userMessage = "系统配置错误,请联系管理员";
|
||||
break;
|
||||
case ErrorType.STORAGE_ERROR:
|
||||
userMessage = "数据保存失败,请重试";
|
||||
break;
|
||||
default:
|
||||
userMessage = "发生了未知错误,请重试或联系客服";
|
||||
}
|
||||
|
||||
// TODO: 这里应该显示UI提示,比如Toast或对话框
|
||||
logger.log("用户提示:", userMessage);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user