Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python Exception Handling Onder de Loep: try, except, finally en raise Effectief Gebruiken

Wat is Exception Handling in Python?

Een exception is een fout die optreedt tijdens de uitvoering van een programma. Tijdens het draaien van een programma genereert Python een exception die afgehandeld moet worden om te voorkomen dat je programma crasht. In Python worden exceptions automatisch getriggerd bij fouten, of ze kunnen door je code worden geactiveerd en afgevat.

De exception geeft aan dat, hoewel de gebeurtenis kan optreden, dit type gebeurtenis zelden voorkomt. Wanneer een methode de exception niet kan afhandelen, wordt deze doorgegeven aan de aanroepende functie. Uiteindelijk, wanneer een exception uit de main-functie wordt gegooid, wordt het programma abrupt beëindigd.

In deze Python exception handling tutorial leer je:

  • Wat is een Exception in Python?
  • Veelvoorkomende Voorbeelden van Exceptions
  • Waarom zou je Exceptions gebruiken?
  • Regels voor Exceptions
  • Python Exception Handling Mechanisme
  • Python Try Statement
  • Python Except Statement
  • Raise Statement in Python
  • Belangrijke Python Fouten
  • Overige Belangrijke Python Exceptions
  • Error vs. Exceptions

Veelvoorkomende Voorbeelden van Exceptions:

  • Delen door nul
  • Toegang tot een bestand dat niet bestaat
  • Optellen van twee incompatibele typen
  • Proberen toegang te krijgen tot een niet-bestaande index van een sequence
  • Verwijderen van de tabel van de losgekoppelde databaseserver
  • Geldopname bij een geldautomaat van meer dan het beschikbare bedrag

Waarom zou je Exceptions gebruiken?

Hier zijn de redenen voor het gebruik van exceptions in Python:

  • Exception handling stelt je in staat om foutafhandelingscode te scheiden van normale code.
  • Een exception is een Python-object dat een fout vertegenwoordigt.
  • Net als codecommentaren helpen exceptions je je te herinneren wat het programma verwacht.
  • Het verheldert de code en verbetert de leesbaarheid.
  • Staat toe om gevolgen te stimuleren omdat de foutafhandeling op één plaats en op één manier plaatsvindt.
  • Een exception is een handige methode voor het afhandelen van foutmeldingen.
  • In Python kun je een exception in het programma ophogen met behulp van de raise exception methode.
  • Het ophogen van een exception helpt je de huidige code-uitvoering te breken en de exception terug te geven totdat deze wordt afgehandeld.
  • Exceptions verwerken voor componenten die ze niet direct kunnen afhandelen.

Regels voor Exceptions

Hier zijn enkele essentiële regels voor Python exception handling:

  • Exceptions moeten klasse-objecten zijn
  • Voor klasse-exceptions kun je een try-statement gebruiken met een except-clausule die een specifieke klasse noemt.
  • Zelfs als een statement of expressie syntactisch correct is, kan het een fout tonen wanneer er een poging wordt gedaan het uit te voeren.
  • Fouten die tijdens de uitvoering worden gevonden, heten exceptions, en ze zijn niet onvoorwaardelijk fataal.

Python Exception Handling Mechanisme

Exception handling wordt beheerd door de volgende 5 sleutelwoorden:

  1. try
  2. except
  3. finally
  4. raise
  5. assert

Python Try Statement

Een try-statement omvat het sleutelwoord try, gevolgd door een dubbele punt (:) en een suite van code waarin exceptions kunnen optreden. Het heeft één of meer clausules.

Tijdens de uitvoering van de try-statement, als er geen exceptions optraden, negeert de interpreter de exception handlers voor die specifieke try-statement.

In het geval er een exception optreedt in een try-suite, verloopt de try-suite en gaat de programmabesturing over naar de bijpassende except-handler die volgt op de try-suite.

Syntax: try: statement(s)

De Except Statement

Except-blokken nemen één argument tegelijk, namelijk het type exception dat ze waarschijnlijk vangen. Deze argumenten kunnen variëren van een specifiek type exception tot een catch-all categorie van exceptions.

Regels voor except-blok:

  • Je kunt een except-blok definiëren met behulp van het sleutelwoord except
  • Except Exception parameter staat altijd tussen haakjes
  • Het vertegenwoordigt altijd het type exception dat het except-blok afhandelt.
  • Een exception handling code wordt geschreven tussen twee {} accolades.
  • Je kunt meerdere except-blokken binnen een enkele try-blok plaatsen.
  • Je kunt een except-blok alleen na het try-blok gebruiken.
  • Alle except-blokken moeten geordend zijn van subklasse naar superklasse exception.

Voorbeeld:

try:
    # code die een exception kan veroorzaken
except ArrayIndexOutOfBoundsException as e:
    print("Eerste gevangen: " + str(e))
except IOError as e:
    print("Tweede gevangen: " + str(e))

Finally Statement in Python

Het finally-blok wordt altijd uitgevoerd, ongeacht of er een exception is gegooid of niet. Het finally-sleutelwoord stelt je in staat om een blok code te maken dat volgt op een try-except-blok.

De finally-clausule is optioneel. Het is bedoeld om clean-up acties te definiëren die in alle omstandigheden uitgevoerd moeten worden.

try:
    raise KeyboardInterrupt
finally:
    print('Welkom, wereld!')
# Output:
# Welkom, wereld!
# KeyboardInterrupt

De finally-clausule wordt uitgevoerd voordat de try-statement wordt verlaten.

Raise Statement in Python

De raise-statement specificeert een argument dat het exception-object initialiseert. Hier volgt een komma op de exception-naam, en argument of tuple van het argument dat de komma volgt.

Syntax:

raise [Exception [, args [, traceback]]]

In deze syntax is het argument optioneel, en op het moment van uitvoering is de exception-argumentwaarde altijd none.

Voorbeeld:

Een Python exception kan elke waarde zijn zoals een string, klasse, nummer of een object. De meeste van deze exceptions die worden gegenereerd door de Python-kern zijn klassen met een argument dat een instantie van de klasse is.

Belangrijke Python Fouten

Fouttype Beschrijving
ArithmeticError ArithmeticError fungeert als basisklasse voor alle rekenkundige exceptions. Het wordt gegenereerd voor fouten in rekenkundige bewerkingen.
ImportError ImportError wordt gegenereerd wanneer je probeert een module te importeren die niet aanwezig is. Dit soort exception treedt op als je een typfout hebt gemaakt in de modulenaam of de module niet in het standaardpad staat.
IndexError Een IndexError wordt gegenereerd wanneer je probeert te verwijzen naar een sequence die buiten bereik is.
KeyError Wanneer een specifieke sleutel niet in een dictionary wordt gevonden, wordt een KeyError exception gegenereerd.
NameError Een NameError wordt gegenereerd wanneer een naam in code wordt verwezen die nooit bestaat in de lokale of globale namespace.
ValueError ValueError wordt gegenereerd wanneer een functie of ingebouwde bewerking een argument ontvangt dat wel van het juiste type kan zijn, maar geen geschikte waarde heeft.
EOFError Deze fout treedt op wanneer een van de ingebouwde functies (input() of raw_input()) een EOF-conditie bereikt zonder gegevens te lezen.
ZeroDivisionError Deze fout treedt op wanneer deling of modulo door nul plaatsvindt voor alle numerieke typen.
IOError Deze fout treedt op wanneer een input/output-bewerking mislukt.
SyntaxError SyntaxError wordt gegenereerd wanneer er een fout in de Python-syntaxis zit.
IndentationError Deze fout treedt op wanneer inspringing niet correct is gedefinieerd

Overige Belangrijke Python Exceptions

Exception Beschrijving
ArithmeticException Rekenkundige fout, zoals delen door nul.
ArrayIndexOutOfBoundsException Array-index is out-of-bounds.
ArrayStoreException Toewijzing helpt je tot het array-element van een incompatibel type.
ClassCastException Ongeldige cast
IllegalMonitorStateException Illegale monitoroperatie, zoals wachten op een ontgrendelde thread.
IllegalStateException Omgeving of applicatie is in verkeerde staat.
ClassNotFoundException Klasse niet gevonden.
CloneNotSupportedException Poging om een object te klonen dat de Cloneable-interface niet implementeert.
IllegalAccessException Toegang tot een klasse geweigerd.
InstantiationException Treedt op wanneer je probeert een object van een interface of abstracte klasse te maken.
CloneNotSupportedException Poging om een object te klonen dat de interface niet implementeert.

Error vs. Exceptions

Error Exceptions
Alle fouten in Python zijn van het unchecked type. Exceptions omvatten zowel checked als unchecked type.
Fouten treden op tijdens runtime en zijn onbekend voor de compiler. Exceptions kunnen hersteld worden door ze af te handelen met try-except blokken.
Fouten worden meestal veroorzaakt door de omgeving waarin een applicatie draait. De applicatie zelf veroorzaakt exceptions.
Voorbeelden:
OutOfMemoryError
Voorbeelden:
Checked Exceptions, SQL exception, NullPointerException, etc.

Samenvatting

  • Een exception is een fout die optreedt tijdens de uitvoering van een programma.
  • De exception geeft aan dat, hoewel de gebeurtenis kan optreden, dit type gebeurtenis zelden voorkomt.
  • Veelvoorkomende voorbeelden van Exceptions zijn 1) Delen door nul, 2) Toegang tot een niet-bestaand bestand, 3) Optellen van twee incompatibele typen.
  • Een exception is een Python-object dat een fout vertegenwoordigt.
  • Een try-statement omvat het sleutelwoord try, gevolgd door een dubbele punt (:) en een suite van code waarin exceptions kunnen optreden. Het heeft één of meer clausules.
  • Except-blokken nemen één argument tegelijk, namelijk het type exception dat ze waarschijnlijk vangen.
  • De raise-statement specificeert een argument dat het exception-object initialiseert.
  • Het finally-blok wordt altijd uitgevoerd, ongeacht of er een exception is gegooid of niet.

Python

  1. C++ Exception Handling: Praktische Try, Catch, Throw Voorbeelden
  2. Python Datatypes onder de knie krijgen: Een praktische gids
  3. Python Operators onder de knie krijgen: Een uitgebreide gids
  4. Python Pass Statement onder de knie krijgen: Een praktische gids
  5. Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
  6. Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
  7. Python-exception handling: try, except, else en finally uitgelegd
  8. Python-iterators: hoe ze werken en hoe je je eigen maakt
  9. Python-closures uitgelegd: hoe geneste functies variabelen vangen
  10. Java Exception Handling meesteren: Try, Catch, Finally, Throw & Throws uitgelegd
  11. Java Exception Handling meesteren: Try, Catch, Finally en Resources