Coverage for src/susi/utils/exception_handler.py: 52%

21 statements  

« prev     ^ index     » next       coverage.py v7.5.0, created at 2025-06-13 14:15 +0000

1import sys 

2import os 

3import traceback 

4from contextlib import contextmanager 

5 

6from ..base.logging import Logging 

7 

8logger = Logging.get_logger() 

9 

10 

11class ExceptionHandler: 

12 """ 

13 Collection of frequently used Exception handlers 

14 """ 

15 

16 @staticmethod 

17 def recover_from_write_error(e, file, data, write_function, *args): 

18 logger.error("{:} - {:}".format(sys._getframe().f_code.co_name, e)) 

19 file = os.path.join(os.path.expanduser('~'), os.path.basename(file)) 

20 logger.warning('Write to: %s', file) 

21 write_function(file, data, args) 

22 

23 

24@contextmanager 

25def error_handler(reraise: bool = False) -> None: 

26 """ 

27 Errorhandler will log any exception to critical log and return. 

28 """ 

29 try: 

30 yield 

31 except Exception as e: 

32 logger.critical("Execution terminated with an Exception: %s\n%s", e, traceback.print_stack()) 

33 if reraise: 

34 raise e