66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
"""项目内部使用的异常类型定义。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
|
|
@dataclass
|
|
class WechatautoError(Exception):
|
|
"""基础异常类型。
|
|
|
|
Args:
|
|
message: 错误信息。若未提供则使用 ``default_message``。
|
|
detail: 附加的上下文信息,可用于在日志中打印更友好的提示。
|
|
"""
|
|
|
|
default_message: str = ""
|
|
message: Optional[str] = None
|
|
detail: Optional[str] = None
|
|
|
|
def __post_init__(self) -> None:
|
|
msg = self.message or self.default_message or self.__class__.__name__
|
|
super().__init__(msg)
|
|
self.message = msg
|
|
|
|
def __str__(self) -> str:
|
|
return self.message or ""
|
|
|
|
def __repr__(self) -> str:
|
|
detail = f", detail={self.detail!r}" if self.detail else ""
|
|
return f"{self.__class__.__name__}(message={self.message!r}{detail})"
|
|
|
|
|
|
class NetWorkError(WechatautoError):
|
|
"""网络请求相关异常。"""
|
|
|
|
default_message = "微信无法连接到网络"
|
|
|
|
|
|
class WechatautoUINotFoundError(WechatautoError):
|
|
"""当无法定位到指定 UI 控件时抛出。"""
|
|
|
|
default_message = "未找到目标 UI 控件"
|
|
|
|
|
|
class WechatautoNoteLoadTimeoutError(WechatautoError):
|
|
"""微信笔记加载超时异常。"""
|
|
|
|
default_message = "微信笔记加载超时"
|
|
|
|
|
|
class WechatautoNotLoggedInError(WechatautoError):
|
|
"""未找到已登录的微信窗口时抛出。"""
|
|
|
|
default_message = "未找到已登录的微信主窗口"
|
|
|
|
|
|
__all__ = [
|
|
"WechatautoError",
|
|
"NetWorkError",
|
|
"WechatautoUINotFoundError",
|
|
"WechatautoNoteLoadTimeoutError",
|
|
"WechatautoNotLoggedInError",
|
|
]
|