Python-fel och inbyggda undantag

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:

  1. Syntaxfel
  2. 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 ifuttalandet.

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. dirlå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 assertuttalande 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+Celler 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, exceptoch finallyuttalanden. För att lära dig mer om dem, besök Python try, utom och slutligen uttalanden.

Intressanta artiklar...