Forståelse av unntakshierarki
Sveip for å vise menyen
Når du arbeider med feilhåndtering i Python, er det viktig å forstå strukturen til de innebygde unntaksklassene. Alle exceptions arver fra rotklassen BaseException. De fleste unntakene du håndterer i daglig kode er underklasser av Exception, som selv er et direkte barn av BaseException. Dette designet gjør det mulig å fange brede kategorier av feil eller håndtere spesifikke problemer.
Vanlig brukte unntak som ValueError, TypeError, KeyError og IOError (også kjent som OSError i moderne Python) er alle underklasser av Exception. Det finnes også mer spesialiserte unntak, som ZeroDivisionError og IndexError, som arver fra disse generelle klassene. Noen unntak, som KeyboardInterrupt og SystemExit, arver direkte fra BaseException – disse er vanligvis ikke ment å fanges opp i vanlige programmer.
Forståelse av dette hierarkiet hjelper deg å skrive presise try/except-blokker, slik at du kun fanger det du ønsker og unngår å skjule kritiske systemsignaler.
1234567891011121314151617181920212223242526272829303132def 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 innebygd unntaksklasse bør brukes for å fange feil når du prøver å konvertere en streng til et heltall som ikke kan konverteres?
2. Hvilket innebygd unntak oppstår når du prøver å få tilgang til en nøkkel i en ordbok som ikke eksisterer?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår