Newer
Older
express-blog / deployment / lib / errors.py
import sys
import traceback


class SuiteError(Exception):
    def __init__(
        self, parent, *args, critical: bool = False, code: int | None = None, **kwargs
    ):
        super().__init__(*args, **kwargs)
        try:
            if type(parent).__name__ == "str":
                print(parent)
                raise Exception("Um... this is embarrassing. Parent? ", parent)
            parent.dump_print_queue()
            traceback.print_stack()
            print(*args, **kwargs)

            if code is not None:
                sys.exit(code)
            if critical:
                raise RuntimeError(*args, **kwargs)
        except Exception as e:
            raise Exception(
                f"There was an error while handling an exception: {e}"
            ) from e
        sys.exit(1)


class TaskError(SuiteError):
    def __init__(
        self, parent, *args, critical: bool = False, code: int | None = None, **kwargs
    ):
        super().__init__(parent, *args, critical=critical, code=code, **kwargs)
        # I dont think this code is reachable
        if critical:
            raise RuntimeError(*args, **kwargs)
        else:
            print(*args, **kwargs)
            traceback.print_stack()