Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Forståelse af Undtagelseshierarki | Comprehensive Error Handling
Python Strukturel Programmering

Forståelse af Undtagelseshierarki

Stryg for at vise menuen

Når du arbejder med fejlhåndtering i Python, er det vigtigt at forstå strukturen af de indbyggede undtagelsesklasser. Alle exceptions nedarver fra rodklassen BaseException. De fleste undtagelser, du vil håndtere i daglig kode, er underklasser af Exception, som selv er et direkte barn af BaseException. Dette design gør det muligt at fange brede kategorier af fejl eller håndtere specifikke problemer.

Almindeligt anvendte undtagelser som ValueError, TypeError, KeyError og IOError (også kendt som OSError i moderne Python) er alle underklasser af Exception. Der findes også mere specialiserede undtagelser, såsom ZeroDivisionError og IndexError, som nedarver fra disse generelle klasser. Nogle undtagelser, som KeyboardInterrupt og SystemExit, nedarver direkte fra BaseException – disse er normalt ikke beregnet til at blive fanget i almindelige programmer.

Forståelse af dette hierarki hjælper dig med at skrive præcise try/except-blokke, så du kun fanger det, du ønsker, og undgår at skjule kritiske system-signaler.

1234567891011121314151617181920212223242526272829303132
def raise_and_catch_exceptions(): # Catching a ValueError try: int("not a number") except ValueError as ve: print("Caught ValueError:", ve) # Catching a ZeroDivisionError (subclass of ArithmeticError) try: result = 10 / 0 except ZeroDivisionError as zde: print("Caught ZeroDivisionError:", zde) # Catching a TypeError try: result = "10" + 5 except TypeError as te: print("Caught TypeError:", te) # Catching an OSError (formerly IOError) try: open("file_that_does_not_exist.txt") except OSError as oe: print("Caught OSError:", oe) # Catching a general Exception (will catch most, but not all, exceptions) try: raise KeyError("missing key") except Exception as e: print("Caught Exception:", type(e).__name__, "-", e) raise_and_catch_exceptions()

1. Hvilken indbygget undtagelsesklasse ville du bruge til at fange fejl, når du forsøger at konvertere en streng til et heltal, som ikke kan konverteres?

2. Hvilken indbygget undtagelse opstår, når du forsøger at tilgå en dictionary-nøgle, der ikke findes?

question mark

Hvilken indbygget undtagelsesklasse ville du bruge til at fange fejl, når du forsøger at konvertere en streng til et heltal, som ikke kan konverteres?

Vælg det korrekte svar

question mark

Hvilken indbygget undtagelse opstår, når du forsøger at tilgå en dictionary-nøgle, der ikke findes?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 1. Kapitel 1
some-alt