Du står fritt frem til å lage dine egne Exceptions, som har mange fordeler! Du får kontroll på hvilke data som går inn i feilmeldingen, slik at en bruker aldri får en feilmelding de ikke burde sett - og du kan kontrollere hva som skal skje når en feil forekommer.
# Merk, her kan du kalle dem hva som helst!!classLoginException(Exception):...classNotAdminException(LoginException):def__init__(self):super().__init__('You are not an admin')classNotLoggedInException(LoginException):def__init__(self):super().__init__('You are not logged in')
Du kan bruke dine exceptions ved å raise dem, altså sende ut en feilmelding som må håndteres:
defaccess_page(logged_in:bool,admin:bool):ifnotlogged_in:raiseNotLoggedInException()ifnotadmin:raiseNotAdminException()print('You are logged in and an admin')try:# You are not an admin, You are not logged inaccess_page(logged_in=True,admin=False)exceptLoginExceptionase:print(e)try:# You are not logged inaccess_page(logged_in=False,admin=False)exceptLoginExceptionase:print(e)try:# You are logged in and an adminaccess_page(logged_in=True,admin=True)exceptLoginExceptionase:print(e)# Denne blir ikke printet siden det ikke er noen feil