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
« 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
6from ..base.logging import Logging
8logger = Logging.get_logger()
11class ExceptionHandler:
12 """
13 Collection of frequently used Exception handlers
14 """
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)
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