aboutsummaryrefslogtreecommitdiff
path: root/tools/cru-py/cru/error.py
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2024-11-11 01:12:29 +0800
committerYuqian Yang <crupest@crupest.life>2024-12-18 18:31:27 +0800
commitca88aee42b741110d42683db826caf61b642abea (patch)
treec2f88e50304ee0911fb9c159310c7eb331d48f9d /tools/cru-py/cru/error.py
parent1d370f56d5a7b21fc440e90944f69627fd6cedb4 (diff)
downloadcrupest-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.py27
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