Explorar el Código

Replaced *Error raises with *_exception raises; Added new exceptions

Vsevolod Levitan hace 1 año
padre
commit
2f3044f9e6

+ 14 - 0
src/errors/file_exception.py

@@ -0,0 +1,14 @@
+from src.errors.error_proxy import error_proxy
+
+
+class file_exception(Exception):
+    __inner_error: error_proxy = error_proxy()
+    
+    def __init__(self, *args: object) -> None:
+        super().__init__(*args)
+        self.__inner_error.set_error(self)
+        
+    @property    
+    def error(self):
+        return self.__inner_error      
+    

+ 14 - 0
src/errors/instance_exception.py

@@ -0,0 +1,14 @@
+from src.errors.error_proxy import error_proxy
+
+
+class instance_exception(Exception):
+    __inner_error: error_proxy = error_proxy()
+    
+    def __init__(self, *args: object) -> None:
+        super().__init__(*args)
+        self.__inner_error.set_error(self)
+        
+    @property    
+    def error(self):
+        return self.__inner_error      
+    

+ 7 - 4
src/settings/settings_manager.py

@@ -1,5 +1,8 @@
 import os, json
 from src.settings import settings
+from src.errors.instance_exception import instance_exception
+from src.errors.argument_exception import argument_exception
+from src.errors.file_exception import file_exception
 
 class settings_manager (object):
     # Объект настроек
@@ -35,7 +38,7 @@ class settings_manager (object):
             self.__settings = settings()
         # Выбрасываем ошибку, если тип __settings не соответствует нужному
         if not isinstance(self.__settings, settings):
-            raise Exception("Невозможно создать экземпляр класса настроек")
+            raise instance_exception("Невозможно создать экземпляр класса настроек")
         # Переносим считанные значения в инстанс настроек
         for key in self.__data.keys():
             # Пропускаем, если у settings нет соответствующего свойства
@@ -53,11 +56,11 @@ class settings_manager (object):
         """
         # Проверяем, чтобы путь был строкой
         if not isinstance(filename, str):
-            raise TypeError("Неверный тип аргумента")
+            raise argument_exception("Неверный тип аргумента")
         
         # Проверяем, чтобы путь не был пуст
         if len(filename) == 0:
-            raise ValueError("Неверная длина аргумента")
+            raise argument_exception("Неверная длина аргумента")
         
         # Убираем leading/trailing пробелы
         self.__filename = filename.strip()
@@ -74,7 +77,7 @@ class settings_manager (object):
 
         # Проверяем, существует ли файл по данному пути
         if not os.path.exists(settings_file):
-            raise FileNotFoundError("Невозможно загрузить файл настроек")
+            raise file_exception("Файл не найден")
         
         # Открываем файл и парсим JSON
         with open(settings_file, "r", encoding="UTF-8") as read_file:

+ 6 - 5
src/validation/validator.py

@@ -1,4 +1,5 @@
 import re
+from src.errors.argument_exception import argument_exception
 
 class validator:
     def check_type(self, value, exp_type):
@@ -12,7 +13,7 @@ class validator:
         """
 
         if not isinstance(value, exp_type):
-            raise TypeError(f"Некорректный тип аргумента ({type(value)}, expected {exp_type})")
+            raise argument_exception(f"Некорректный тип аргумента ({type(value)}, expected {exp_type})")
 
         return True
 
@@ -30,7 +31,7 @@ class validator:
             value = str(value)
 
         if len(value) != length:
-            raise ValueError(f"Несоответствующая длина аргумента ({len(value)}, expected {length})")
+            raise argument_exception(f"Несоответствующая длина аргумента ({len(value)}, expected {length})")
 
         return True
 
@@ -50,7 +51,7 @@ class validator:
         
         if (len(value) > length if inclusive \
                 else len(value) >= length):
-                    raise ValueError(f"Превышена длина аргумента ({len(value)}, max={length})")
+                    raise argument_exception(f"Превышена длина аргумента ({len(value)}, max={length})")
 
         return True
 
@@ -70,7 +71,7 @@ class validator:
 
         if (len(value) < length if inclusive \
                 else len(value) <= length):
-            raise ValueError("Недостаточная длина аргумента ({len(value)}, min={length})")
+            raise argument_exception("Недостаточная длина аргумента ({len(value)}, min={length})")
 
         return True
 
@@ -121,6 +122,6 @@ class validator:
         """
 
         if re.match(expression, value) is None:
-            raise ValueError(f"Аргумент не соответствует регулярному выражению ({str(value)}, regex: {expression})")
+            raise argument_exception(f"Аргумент не соответствует регулярному выражению ({str(value)}, regex: {expression})")
 
         return True