Exceptions

Custom exception

from dataclasses import dataclass


@dataclass
class VacationDaysShortageError(Exception):
    requested_days: int
    remaining_days: int


@dataclass
class Employee:

    name: str
    vacation_days: int = 25

    def take_holiday(self, days: int = 1) -> None:
        if self.vacation_days < days:
            raise VacationDaysShortageError(
                requested_days=days,
                remaining_days=self.vacation_days,
            )
        self.vacation_days -= days
        print("Have fun on your holiday. Don't forget to check your emails!")


def main() -> None:
    try:
        louis = Employee(name="Louis")
        louis.take_holiday(30)
    except VacationDaysShortageError as err:
        print(
            f"{err.requested_days} days requested, but only {err.remaining_days} left"
        )


if __name__ == "__main__":
    main()

Last updated