Browse Source

Pulled in initial exception code

Vsevolod Levitan 1 year ago
parent
commit
827700076e
4 changed files with 206 additions and 0 deletions
  1. 53 0
      src/abstract-reference.py
  2. 14 0
      src/argument-exception.py
  3. 90 0
      src/error-proxy.py
  4. 49 0
      src/test-errors.py

+ 53 - 0
src/abstract-reference.py

@@ -0,0 +1,53 @@
+import uuid
+from abc import ABC
+from error_proxy import error_proxy
+
+class abstract_reference(ABC):
+    __id: uuid.UUID
+    __name:str = ""
+    __error: error_proxy = error_proxy()
+    
+    def __init__(self, name: str = None) -> None:
+        self.name = name
+        self.__id = uuid.uuid4()
+        
+    @property    
+    def error(self):
+        """
+           Работа с ошибками
+
+        Returns:
+            _type_: _description_
+        """
+        return self.__error    
+        
+    @property    
+    def id(self):
+        """
+            Уникальный код
+        Returns:
+            _type_: _description_
+        """
+        return self.__id    
+        
+    @property    
+    def name(self):
+        """
+           Наименование
+        Returns:
+            _type_: _description_
+        """
+        return self.__name.strip()    
+   
+    @name.setter 
+    def name(self, value: str):
+        
+        if not isinstance(value, str):
+            raise Exception("Неверный аргумент!")
+        
+        if value == "":
+            raise Exception("Некорректное значение наименование!")
+        
+        self.__name = value.strip()
+        
+        

+ 14 - 0
src/argument-exception.py

@@ -0,0 +1,14 @@
+from error_proxy import error_proxy
+
+
+class argument_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      
+    

+ 90 - 0
src/error-proxy.py

@@ -0,0 +1,90 @@
+
+
+class error_proxy:
+    __error_text = ""
+    __error_source = ""
+    __is_error = False
+    
+    
+    def __init__(self, error_text: str = "", error_source: str = "") -> None:
+        self.error_source = error_source
+        self.error_text = error_text
+        
+    
+    @property    
+    def error_text(self):
+        """
+            Текст сообщения
+        Returns:
+            _type_: _description_
+        """
+        return self.__error_text
+    
+    
+    @error_text.setter
+    def error_text(self, value: str):
+        if not isinstance(value, str):
+            raise Exception("Некорректно передан аргумент!")
+        
+        if(value.strip() ==""):
+            self.__is_error = False
+            return
+            
+        self.__error_text = value.strip()
+        self.__is_error = True
+        
+        
+    @property    
+    def error_source(self):
+        """
+            Источник ошибки
+        Returns:
+            _type_: _description_
+        """
+        return self.__error_source
+    
+    
+    @error_source.setter
+    def error_source(self, value: str):
+        if not isinstance(value, str):
+            raise Exception("Некорректно передан аргумент!")
+        
+        if(value.strip() ==""):
+            return
+            
+        self.__error_source = value.strip()
+    
+        
+    @property
+    def is_error(self):
+        """
+            Флаг. Есть ошибка
+        """
+        return self.__is_error  
+        
+        
+    def set_error(self, exception: Exception):
+        """
+            Сохранить ошибку
+        Args:
+            exception (Exception): _description_
+        """
+        if not isinstance(exception, Exception):
+            self.error_text = "Некорректно переданы параметры!"
+            self.error_source = "set_error" 
+            return
+
+        if exception is not None:        
+            self.error_text = f"ОШИБКА! {str(exception)}"
+            self.error_source = f"ИСКЛЮЧЕНИЕ! {type(exception)}"
+        else:
+            self.error_text = ""
+            
+                
+        
+        
+                    
+        
+        
+        
+        

+ 49 - 0
src/test-errors.py

@@ -0,0 +1,49 @@
+from error_proxy import error_proxy
+import unittest
+from argument_exception import argument_exception
+
+
+
+class test_errors(unittest.TestCase):
+    
+    def test_check_argument_exception(self):
+        # Подготовка
+        
+        # Действие
+        try:
+            raise argument_exception("Test")
+        except argument_exception as ex:
+            # Проверка
+            print(ex.error.error_text)
+            print(ex.error.error_source)
+            
+            
+            assert ex.error.is_error
+            return
+            
+        assert 1 != 1    
+        
+    
+    def test_check_set_exception(self):
+        # Подготовка
+        error = error_proxy()
+              
+        
+        # Действие
+        try:
+            result = 1 / 0
+        except Exception as ex  :
+            error.set_error(ex)
+            
+        # Проверки
+        assert error.is_error == True
+        
+    
+    def test_check_set_error_text(self):
+        # Подготовка
+        error = error_proxy("Test", "Test")
+        
+        # Действие
+        
+        # Проверки
+        assert error.is_error == True