mirror of
https://github.com/hyb-oyqq/FRAISEMOE-Addons-Installer-NEXT.git
synced 2025-12-19 21:38:35 +00:00
feat(core): 增强卸载处理程序的UI反馈和异常日志记录
- 在卸载处理程序中使用UI管理器显示和隐藏加载对话框,提升用户体验。 - 增加异常钩子,确保未捕获的异常能够记录到日志文件中,增强系统的稳定性和可追溯性。
This commit is contained in:
@@ -1,18 +1,50 @@
|
||||
import sys
|
||||
import os
|
||||
import datetime
|
||||
import traceback
|
||||
from PySide6.QtWidgets import QApplication, QMessageBox
|
||||
from main_window import MainWindow
|
||||
from core.managers.privacy_manager import PrivacyManager
|
||||
from utils.logger import setup_logger, cleanup_old_logs
|
||||
from utils.logger import setup_logger, cleanup_old_logs, log_uncaught_exceptions
|
||||
from config.config import LOG_FILE, APP_NAME, LOG_RETENTION_DAYS
|
||||
from utils import load_config
|
||||
|
||||
def excepthook(exc_type, exc_value, exc_traceback):
|
||||
"""全局异常处理钩子,将未捕获的异常记录到日志并显示错误对话框"""
|
||||
# 记录异常到日志
|
||||
if hasattr(sys, '_excepthook'):
|
||||
sys._excepthook(exc_type, exc_value, exc_traceback)
|
||||
else:
|
||||
log_uncaught_exceptions(exc_type, exc_value, exc_traceback)
|
||||
|
||||
# 将异常格式化为易读的形式
|
||||
exception_text = ''.join(traceback.format_exception(exc_type, exc_value, exc_traceback))
|
||||
|
||||
# 创建错误对话框
|
||||
msg = f"程序遇到未处理的异常:\n\n{str(exc_value)}\n\n详细错误已记录到日志文件。"
|
||||
try:
|
||||
# 尝试使用QMessageBox显示错误
|
||||
app = QApplication.instance()
|
||||
if app:
|
||||
QMessageBox.critical(None, f"错误 - {APP_NAME}", msg)
|
||||
except Exception:
|
||||
# 如果QMessageBox失败,则使用标准输出
|
||||
print(f"严重错误: {msg}")
|
||||
print(f"详细错误: {exception_text}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
# 设置主日志
|
||||
logger = setup_logger("main")
|
||||
logger.info("应用启动")
|
||||
|
||||
# 设置全局异常处理钩子
|
||||
sys._excepthook = sys.excepthook
|
||||
sys.excepthook = excepthook
|
||||
|
||||
# 记录程序启动信息
|
||||
logger.info(f"Python版本: {sys.version}")
|
||||
logger.info(f"运行平台: {sys.platform}")
|
||||
|
||||
# 检查配置中是否启用了调试模式
|
||||
config = load_config()
|
||||
debug_mode = config.get("debug_mode", False)
|
||||
@@ -48,6 +80,7 @@ if __name__ == "__main__":
|
||||
privacy_manager = PrivacyManager()
|
||||
except Exception as e:
|
||||
logger.error(f"初始化隐私协议管理器失败: {e}")
|
||||
logger.error(f"错误详情: {traceback.format_exc()}")
|
||||
QMessageBox.critical(
|
||||
None,
|
||||
"隐私协议加载错误",
|
||||
|
||||
Reference in New Issue
Block a user