Gå til innhold

4. Egne exceptions

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!!
class LoginException(Exception):  
    ...  


class NotAdminException(LoginException):  
    def __init__(self):  
        super().__init__('You are not an admin')  


class NotLoggedInException(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:

def access_page(logged_in: bool, admin: bool):
    if not logged_in:
        raise NotLoggedInException()
    if not admin:
        raise NotAdminException()
    print('You are logged in and an admin')


try:  # You are not an admin, You are not logged in
    access_page(logged_in=True, admin=False)
except LoginException as e:
    print(e)

try:  # You are not logged in
    access_page(logged_in=False, admin=False)
except LoginException as e:
    print(e)

try:  # You are logged in and an admin
    access_page(logged_in=True, admin=True)
except LoginException as e:
    print(e)  # Denne blir ikke printet siden det ikke er noen feil

1 år siden 1 år siden GitHub Sondre Grønås