diff options
author | crupest <crupest@outlook.com> | 2024-11-11 01:12:29 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2024-12-18 18:31:27 +0800 |
commit | ca88aee42b741110d42683db826caf61b642abea (patch) | |
tree | c2f88e50304ee0911fb9c159310c7eb331d48f9d /tools/cru-py/cru/error.py | |
parent | 1d370f56d5a7b21fc440e90944f69627fd6cedb4 (diff) | |
download | crupest-ca88aee42b741110d42683db826caf61b642abea.tar.gz crupest-ca88aee42b741110d42683db826caf61b642abea.tar.bz2 crupest-ca88aee42b741110d42683db826caf61b642abea.zip |
HALF WORK: 2024.12.13
Diffstat (limited to 'tools/cru-py/cru/error.py')
-rw-r--r-- | tools/cru-py/cru/error.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tools/cru-py/cru/error.py b/tools/cru-py/cru/error.py new file mode 100644 index 0000000..95edbd3 --- /dev/null +++ b/tools/cru-py/cru/error.py @@ -0,0 +1,27 @@ +from typing import NoReturn + + +class CruException(Exception): + """Base exception class of all exceptions in cru.""" + + +class CruUnreachableError(CruException): + """Raised when a code path is unreachable.""" + + +def cru_unreachable() -> NoReturn: + raise CruUnreachableError() + + +class CruInternalError(CruException): + """Raised when an internal logic error occurs.""" + + +class UserFriendlyException(CruException): + def __init__(self, message: str, user_message: str, *args, **kwargs) -> None: + super().__init__(message, *args, **kwargs) + self._user_message = user_message + + @property + def user_message(self) -> str: + return self._user_message |