I denna handledning lär du dig om olika typer av fel och undantag som är inbyggda i Python. De tas upp när Python-tolk stöter på fel.
Video: Python Exception Handling
Vi kan göra vissa misstag när vi skriver ett program som leder till fel när vi försöker köra det. Ett pythonprogram avslutas så fort det stöter på ett fel som inte hanteras. Dessa fel kan i stort sett klassificeras i två klasser:
- Syntaxfel
- Logiska fel (undantag)
Python-syntaxfel
Fel orsakat av att inte följa rätt struktur (syntax) för språket kallas syntaxfel eller parsningsfel .
Låt oss titta på ett exempel:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Som visas i exemplet indikerar en pil var parsern stötte på syntaxfelet.
Vi kan märka här att ett kolon :
saknas i if
uttalandet.
Python-logiska fel (undantag)
Fel som inträffar vid körning (efter godkänd syntaxtest) kallas undantag eller logiska fel .
De uppstår till exempel när vi försöker öppna en fil (för läsning) som inte finns ( FileNotFoundError
), försöka dela ett tal med noll ( ZeroDivisionError
) eller försöka importera en modul som inte finns ( ImportError
).
När dessa typer av runtime-fel uppstår skapar Python ett undantagsobjekt. Om det inte hanteras ordentligt skriver det ut en spårning till det felet tillsammans med några detaljer om varför felet inträffade.
Låt oss titta på hur Python behandlar dessa fel:
>>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'
Inbyggda Python-undantag
Olaglig verksamhet kan leda till undantag. Det finns många inbyggda undantag i Python som tas upp när motsvarande fel uppstår. Vi kan se alla de inbyggda undantagen med hjälp av den inbyggda local()
funktionen enligt följande:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
returnerar en modul med inbyggda undantag, funktioner och attribut. dir
låter oss lista dessa attribut som strängar.
Några av de vanliga inbyggda undantagen i Python-programmering tillsammans med felet som orsakar dem listas nedan:
Undantag | Orsak till fel |
---|---|
AssertionError | Upphöjt när ett assert uttalande misslyckas. |
AttributeError | Hämtas när attribut eller referens misslyckas. |
EOFError | Upphöjt när input() funktionen träffar slutet av filen. |
FloatingPointError | Upphöjt när en flytande punkt misslyckas. |
GeneratorExit | Höj när en generator close() metod kallas. |
ImportError | Upphöjt när den importerade modulen inte hittas. |
IndexError | Höjs när indexet för en sekvens är utanför intervallet. |
KeyError | Upphämtad när en nyckel inte finns i en ordlista. |
KeyboardInterrupt | Upphöjt när användaren trycker på avbrytarknappen ( Ctrl+C eller Delete ). |
MemoryError | Upphöjt när en operation tar slut på minne. |
NameError | Upphöjt när en variabel inte finns i lokal eller global omfattning. |
NotImplementedError | Uppvuxen med abstrakta metoder. |
OSError | Upphöjt när systemfunktionen orsakar systemrelaterat fel. |
OverflowError | Upphöjt när resultatet av en aritmetisk operation är för stort för att kunna representeras. |
ReferenceError | Uppvuxen när en svag referensproxy används för att komma åt en referens som samlats in. |
RuntimeError | Raised when an error does not fall under any other category. |
StopIteration | Raised by next() function to indicate that there is no further item to be returned by iterator. |
SyntaxError | Raised by parser when syntax error is encountered. |
IndentationError | Raised when there is incorrect indentation. |
TabError | Raised when indentation consists of inconsistent tabs and spaces. |
SystemError | Raised when interpreter detects internal error. |
SystemExit | Raised by sys.exit() function. |
TypeError | Raised when a function or operation is applied to an object of incorrect type. |
UnboundLocalError | Raised when a reference is made to a local variable in a function or method, but no value has been bound to that variable. |
UnicodeError | Raised when a Unicode-related encoding or decoding error occurs. |
UnicodeEncodeError | Raised when a Unicode-related error occurs during encoding. |
UnicodeDecodeError | Raised when a Unicode-related error occurs during decoding. |
UnicodeTranslateError | Uppväxt när ett Unicode-relaterat fel inträffar under översättningen. |
ValueError | Upphöjt när en funktion får ett argument av rätt typ men felaktigt värde. |
ZeroDivisionError | Upphöjt när den andra operand för division eller modulo är noll. |
Om det behövs kan vi också definiera våra egna undantag i Python. För att lära dig mer om dem, besök Python användardefinierade undantag.
Vi kan hantera dessa inbyggda och användardefinierade undantag i Python hjälp try
, except
och finally
uttalanden. För att lära dig mer om dem, besök Python try, utom och slutligen uttalanden.