Utils.Exceptions 源代码

from typing import Optional

from .code import (decode_error_code, format_error_code,
                   get_error_code_for_exception)


[文档] class OrionException(Exception): """ OrionLauncher异常基类 所有自定义异常都应继承此类,以便于统一处理和识别。 Attributes: message (str): 异常消息 code (int): 错误代码 details (dict): 附加的错误详情 """
[文档] def __init__(self, message: str, code: int = None, details: Optional[dict] = None): """ 初始化OrionException实例 Args: message (str): 异常消息 code (int, optional): 错误代码,如果为None则自动获取 details (dict, optional): 附加的错误详情,默认为None """ self.message = message # 如果没有提供code,则根据异常类名自动获取 if code is None: code = get_error_code_for_exception(self.__class__.__name__) self.code = code self.details = details or {} super().__init__(self.message)
[文档] def __str__(self) -> str: """返回异常的字符串表示""" if self.code: formatted_code = format_error_code(self.code) return f"[{formatted_code}] {self.message}" return self.message
[文档] def to_dict(self) -> dict: """将异常转换为字典格式""" return { "message": self.message, "code": self.code, "formatted_code": format_error_code(self.code), "exception_type": self.__class__.__name__, "details": self.details, }
# ===== 核心异常 =====
[文档] class CoreException(OrionException): """核心模块异常基类""" pass
# ----- 网络相关异常 -----
[文档] class NetworkException(CoreException): """网络相关异常基类""" pass
[文档] class DownloadException(NetworkException): """下载异常""" pass
[文档] class ApiException(NetworkException): """API调用异常""" pass
[文档] class AuthenticationException(NetworkException): """认证异常""" pass
# ----- 文件系统相关异常 -----
[文档] class FileSystemException(CoreException): """文件系统相关异常基类""" pass
[文档] class FileNotFoundException(FileSystemException): """文件未找到异常""" pass
[文档] class FilePermissionException(FileSystemException): """文件权限异常""" pass
[文档] class FileOperationException(FileSystemException): """文件操作异常""" pass
# ----- 配置相关异常 -----
[文档] class ConfigException(CoreException): """配置相关异常基类""" pass
[文档] class InvalidConfigException(ConfigException): """无效配置异常""" pass
[文档] class ConfigNotFoundException(ConfigException): """配置未找到异常""" pass
# ----- 游戏相关异常 -----
[文档] class GameException(CoreException): """游戏相关异常基类""" pass
[文档] class GameLaunchException(GameException): """游戏启动异常""" pass
[文档] class GameInstallException(GameException): """游戏安装异常""" pass
# ===== 控制器异常 =====
[文档] class ControllerException(OrionException): """控制器异常基类""" pass
[文档] class InitializationException(ControllerException): """初始化异常""" pass
[文档] class AsyncTaskException(ControllerException): """异步任务异常""" pass
# ===== 视图异常 =====
[文档] class ViewException(OrionException): """视图异常基类""" pass
[文档] class UIException(ViewException): """UI相关异常""" pass
# ===== 工具异常 =====
[文档] class UtilsException(OrionException): """工具异常基类""" pass
[文档] class RepositoryException(UtilsException): """仓库异常""" pass
# ===== 系统异常包装器 =====
[文档] class WrappedSystemException(OrionException): """ 系统异常包装器 用于包装系统异常,将其转换为OrionException Attributes: original_exception (Exception): 原始系统异常 """
[文档] def __init__(self, original_exception: Exception, message: Optional[str] = None): """ 初始化WrappedSystemException实例 Args: original_exception (Exception): 原始系统异常 message (str, optional): 自定义消息,如果为None则使用原始异常消息 """ self.original_exception = original_exception message = message or str(original_exception) details = {"exception_type": type(original_exception).__name__} super().__init__(message, details=details)
# 导出工具函数 __all__ = [ # 基础异常类 "OrionException", # Core层异常 "CoreException", "NetworkException", "DownloadException", "ApiException", "AuthenticationException", "FileSystemException", "FileNotFoundException", "FilePermissionException", "FileOperationException", "ConfigException", "InvalidConfigException", "ConfigNotFoundException", "GameException", "GameLaunchException", "GameInstallException", # Controller层异常 "ControllerException", "InitializationException", "AsyncTaskException", # View层异常 "ViewException", "UIException", # Utils层异常 "UtilsException", "RepositoryException", # 系统异常包装器 "WrappedSystemException", # 工具函数 "decode_error_code", "get_error_code_for_exception", "format_error_code", ]