Wat is een uitzondering in Python?
Een uitzondering is een fout die optreedt tijdens het uitvoeren van een programma. Tijdens het uitvoeren van een programma genereert Python echter een uitzondering die moet worden afgehandeld om te voorkomen dat uw programma crasht. In Python-taal worden uitzonderingen automatisch geactiveerd bij fouten, of ze kunnen worden geactiveerd en onderschept door uw code.
De uitzondering geeft aan dat, hoewel de gebeurtenis kan optreden, dit type gebeurtenis niet vaak voorkomt. Wanneer de methode de uitzondering niet kan afhandelen, wordt deze naar de aanroepfunctie geworpen. Uiteindelijk, wanneer een uitzondering uit de hoofdfunctie wordt gegooid, wordt het programma abrupt beëindigd.
In deze Python-tutorial over uitzonderlijke afhandeling leer je:
- Wat is een uitzondering in Python?
- Veelvoorkomende voorbeelden van uitzonderingen
- Waarom zou u uitzonderingen gebruiken?
- Regels voor uitzonderingen
- Uitzonderlijk bedieningsmechanisme
- De Try-verklaring
- De catch-verklaring
- The Raise Statement
- Belangrijke Python-fouten
- Andere belangrijke uitzonderingen voor Python
- Fout vs. uitzonderingen
Veelvoorkomende voorbeelden van uitzonderingen:
- Deling door nul
- Toegang krijgen tot een bestand dat niet bestaat.
- Toevoeging van twee incompatibele typen
- Proberen toegang te krijgen tot een niet-bestaande index van een reeks
- De tabel verwijderen van de verbroken databaseserver.
- Geldopname van meer dan het beschikbare bedrag
Waarom zou u uitzonderingen gebruiken?
Dit zijn de redenen voor het gebruik van uitzonderingen in Python:
- Met het afhandelen van uitzonderingen kunt u foutafhandelingscode scheiden van normale code.
- Een uitzondering is een Python-object dat een fout vertegenwoordigt.
- Net als bij codecommentaar, helpen uitzonderingen u om uzelf eraan te herinneren wat het programma verwacht.
- Het verduidelijkt de code en verbetert de leesbaarheid.
- Hiermee kunt u consequenties stimuleren, aangezien de foutafhandeling op één plaats en op één manier plaatsvindt.
- Een uitzondering is een handige methode om foutmeldingen af te handelen.
- In Python kunt u een uitzondering in het programma maken door de methode voor het verhogen van uitzonderingen te gebruiken.
- Door een uitzondering op te werpen, kunt u de huidige code-uitvoering verbreken en wordt de uitzondering teruggestuurd naar verwachting totdat deze is afgehandeld.
- Uitzonderingen verwerken voor componenten die ze niet rechtstreeks kunnen verwerken.
Regels voor uitzonderingen
Hier zijn enkele essentiële regels voor het afhandelen van Python-uitzonderingen:
- Uitzonderingen moeten klasseobjecten zijn
- Voor klasse-uitzonderingen kunt u de instructie try gebruiken met een exceptieclausule die een bepaalde klasse vermeldt.
- Zelfs als een instructie of uitdrukking syntactisch correct is, kan deze een fout weergeven wanneer wordt geprobeerd deze uit te voeren.
- Fouten die tijdens de uitvoering worden gevonden, worden uitzonderingen genoemd en zijn niet onvoorwaardelijk fataal.
Uitzonderlijk bedieningsmechanisme
De afhandeling van uitzonderingen wordt beheerd door de volgende 5 sleutelwoorden:
- proberen
- vangst
- Tenslotte
- werpen
De Try-verklaring
Een try-instructie bevat het trefwoord try, gevolgd door een dubbele punt (:) en een reeks code waarin uitzonderingen kunnen voorkomen. Het heeft een of meer clausules.
Als er tijdens de uitvoering van de try-instructie geen uitzonderingen zijn opgetreden, negeert de interpreter de exception-handlers voor die specifieke try-instructie.
In het geval dat er een uitzondering optreedt in een try-suite, verloopt de try-suite en wordt de programmabesturing overgedragen aan de overeenkomende behalve handler na de try-suite.
Syntax:try:statement(s)
De catch-verklaring
Catch-blokken nemen één argument tegelijk aan, wat het type uitzondering is dat het waarschijnlijk zal opvangen. Deze argumenten kunnen variëren van een specifiek type uitzondering dat kan worden gevarieerd tot een allesomvattende categorie uitzonderingen.
Regels voor catch-block:
- U kunt een catch-blok definiëren door het trefwoord catch te gebruiken
- De parameter Catch Exception staat altijd tussen haakjes
- Het vertegenwoordigt altijd het type uitzondering dat blokgrepen opvangt.
- Een code voor het afhandelen van uitzonderingen wordt tussen twee {} accolades geschreven.
- U kunt meerdere catch-blokken binnen één try-blok plaatsen.
- U kunt een catch-blok pas gebruiken na het try-blok.
- Alle catch-blokken moeten worden geordend van subklasse tot superklasse-uitzondering.
Voorbeeld:
try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}
Eindelijk blokkeren
Ten slotte wordt block altijd uitgevoerd, ongeacht of er een exception wordt gegenereerd of niet. Met het laatste trefwoord kunt u een codeblok maken dat volgt op een try-catch-blok.
Ten slotte is de clausule optioneel. Het is bedoeld om opruimacties te definiëren die onder alle omstandigheden moeten worden uitgevoerd.
try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt
Ten slotte wordt de clausule uitgevoerd vóór de instructie try.
The Raise Statement
De instructie raise specificeert een argument dat het exception-object initialiseert. Hier volgt een komma de naam van de uitzondering en het argument of tupel van het argument dat volgt op de komma.
Syntaxis:
raise [Exception [, args [, traceback]]]
In deze syntaxis is het argument optioneel en op het moment van uitvoering is de waarde van het uitzonderingsargument altijd geen.
Voorbeeld:
Een Python-uitzondering kan elke waarde zijn, zoals een tekenreeks, klasse, getal of een object. De meeste van deze uitzonderingen die worden opgeworpen door Python core zijn klassen met een argument dat een instantie van de klasse is.
Belangrijke Python-fouten
Fouttype | Omschrijving |
Rekenkundige fout | ArithmeticError fungeert als een basisklasse voor alle rekenkundige uitzonderingen. Het wordt verhoogd voor fouten in rekenkundige bewerkingen. |
ImportFout | ImportError wordt weergegeven als u een module probeert te importeren die niet aanwezig is. Dit soort uitzondering doet zich voor als u een typefout heeft gemaakt in de modulenaam of de module die niet aanwezig is in het standaardpad. |
Indexfout | Er wordt een IndexError weergegeven wanneer u probeert een reeks te verwijzen die buiten het bereik valt. |
Sleutelfout | Als een specifieke sleutel niet in een woordenboek wordt gevonden, wordt een KeyError-uitzondering gegenereerd. |
NaamFout | Een NameError wordt gegenereerd als er in code naar een naam wordt verwezen die nooit in de lokale of globale naamruimte voorkomt. |
ValueError | Waardefout treedt op wanneer een functie of ingebouwde bewerking een argument ontvangt dat van het juiste type kan zijn, maar geen geschikte waarde heeft. |
EOFerror | Dit soort fout doet zich voor wanneer een van de ingebouwde functies (input () of raw_input ()) een EOF-toestand bereikt zonder gegevens te lezen. |
ZeroDivisonError | Dit type fout doet zich voor wanneer deling of module door nul plaatsvindt voor alle numerieke typen. |
IOFout | Dit soort fout doet zich voor wanneer een invoer- / uitvoerbewerking mislukt. |
syntax error | Syntax Er zijn fouten opgetreden wanneer er een fout is opgetreden in de syntaxis van Python. |
Inspringfout | Deze fout is opgetreden wanneer de inspringing niet correct is gedefinieerd |
Andere belangrijke uitzonderingen voor Python
Uitzondering | Omschrijving |
ArithmeticException | Rekenkundige fout, zoals delen door nul. |
ArraylndexOutOfBoundsException | Array-index is buiten het bereik. |
ArrayStoreException | Toewijzing helpt u bij het array-element van een incompatibel type. |
ClassCastException | Ongeldige cast |
MlegalMonitorStateException | Illegale bediening van de monitor, zoals wachten op een ontgrendelde thread. |
MlegalStateException | Omgeving of applicatie is in verkeerde staat. |
ClassNotFoundException | Klasse niet gevonden. |
CloneNotSupportedException | Poging om een object te klonen dat de Cloneable-interface niet implementeert. |
Illegale AccessException | Toegang tot een klas is geweigerd. |
InstantiationException | Treedt op wanneer u probeert een object van een interface of abstracte klasse te maken. |
CloneNotSupportedException | Probeer een object te klonen dat de interface niet implementeert. |
Fout vs. uitzonderingen
Fout | Uitzonderingen |
Alle fouten in Python zijn van het niet-aangevinkte type. | Uitzonderingen zijn zowel aangevinkte als niet-aangevinkte typen. |
Fouten treden op tijdens runtime die onbekend zijn voor de compiler. | Uitzonderingen kunnen worden hersteld door ze af te handelen met behulp van try-catch-blokken. |
Fouten worden meestal veroorzaakt door de omgeving waarin een applicatie draait. | De applicatie zelf veroorzaakt uitzonderingen. |
Voorbeelden: OutofMemoryError | Voorbeelden: gecontroleerde uitzonderingen, SQL-uitzondering, NullPointerException, enz. |
Overzicht
- Een uitzondering is een fout die is opgetreden tijdens de uitvoering van een programma.
- De uitzondering geeft aan dat, hoewel de gebeurtenis kan optreden, dit type gebeurtenis niet vaak voorkomt.
- Veelvoorkomende voorbeelden van uitzonderingen zijn 1) Deling door nul, 2) Toegang tot een bestand dat niet bestaat, 3) Toevoeging van twee incompatibele typen.
- Een uitzondering is een Python-object dat een fout vertegenwoordigt.
- Een try-instructie bevat het trefwoord try, gevolgd door een dubbele punt (:) en een reeks code waarin uitzonderingen kunnen voorkomen. Het heeft een of meer clausules.
- Catch-blokken nemen één argument tegelijk aan, wat het type uitzondering is dat het waarschijnlijk zal opvangen.
- De instructie raise specificeert een argument dat het exception-object initialiseert.
- Ten slotte wordt block altijd uitgevoerd, ongeacht of er een exception wordt gegenereerd of niet.