Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Förståelse av undantagshierarki | Comprehensive Error Handling
Python Strukturell Programmering

Förståelse av undantagshierarki

Svep för att visa menyn

När du arbetar med felhantering i Python är det viktigt att förstå strukturen för dess inbyggda undantagsklasser. Alla exceptions ärver från rotklassen BaseException. De flesta undantag du hanterar i vardaglig kod är underklasser till Exception, som i sin tur är ett direkt barn till BaseException. Denna design gör det möjligt att fånga breda kategorier av fel eller hantera specifika problem.

Vanligt förekommande undantag som ValueError, TypeError, KeyError och IOError (även kallad OSError i modern Python) är alla underklasser till Exception. Det finns också mer specialiserade undantag, såsom ZeroDivisionError och IndexError, som ärver från dessa generella klasser. Vissa undantag, som KeyboardInterrupt och SystemExit, ärver direkt från BaseException – dessa är vanligtvis inte avsedda att fångas i normala program.

Att förstå denna hierarki hjälper dig att skriva precisa try/except-block, så att du endast fångar det du avser och undviker att dölja kritiska systemhändelser.

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. Vilken inbyggd undantagsklass skulle du använda för att fånga fel när du försöker konvertera en sträng till ett heltal som inte kan konverteras?

2. Vilket inbyggt undantag uppstår när du försöker komma åt en nyckel i en ordbok som inte finns?

question mark

Vilken inbyggd undantagsklass skulle du använda för att fånga fel när du försöker konvertera en sträng till ett heltal som inte kan konverteras?

Vänligen välj det korrekta svaret

question mark

Vilket inbyggt undantag uppstår när du försöker komma åt en nyckel i en ordbok som inte finns?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 1. Kapitel 1
some-alt