Python - Geavanceerde afhandeling van uitzonderingen

Inhoudsopgave
Zodra een uitzondering is gemaakt, is het onze plicht om deze te kunnen afhandelen, op deze manier kan ons programma een actie uitvoeren, een bericht genereren, de correctie van de door de gebruiker ingevoerde parameter vragen, kortom, vele mogelijkheden .
Uitzonderingen opvangen
Zoals we eerder hadden vermeld, is het belangrijkste dat wanneer we een uitzondering zien, het op deze manier kunnen worden opgevangen, we kunnen beslissen wat het programma moet doen zodra deze situatie zich voordoet, om dit te doen zullen we de commando's gebruiken probeer / behalve. Om het bovenstaande te demonstreren gaan we een heel eenvoudig delingsprogramma analyseren, omdat we weten dat we een getal niet door 0 kunnen delen, dus dit zal een uitzondering veroorzaken.
Laten we beginnen met het bouwen van onze code, onthoud dat we dit in elke teksteditor kunnen doen en we moeten het bestand opslaan met de extensie .py zodat we het op onze opdrachtregel of console kunnen uitvoeren.
 x = invoer ('Voer het eerste cijfer in:') y = invoer ('Voer het tweede cijfer in:') print x / y [/ grootte] [grootte = 4]

Dit zal behoorlijk werken totdat de gebruiker de waarde 0 invoert als het tweede argument, dit zal een uitzondering veroorzaken zoals we kunnen zien in de volgende afbeelding van de uitvoering van dit programma:

We kunnen dit voorkomen door gebruik te maken van de probeer / behalve die we aan het begin van deze sectie hadden gezien, laten we onze gecorrigeerde code eens bekijken:
 probeer: x = invoer ('Voer het eerste getal in:') y = invoer ('Voer het tweede getal in:') print x / y behalve ZeroDivisionerror: print "Het tweede getal kan niet nul zijn!" 

Deze manier van omgaan met deze zaak is vrij schoon, ondanks alles zou ook kunnen worden gezegd dat met een simpele indien dat zou de voorwaarde stellen dat de waarde van Y Het zou niet 0 zijn, zou een adequate oplossing zijn, maar als we meer divisies aan ons programma zouden toevoegen, zouden we meer conditionals nodig hebben, in plaats daarvan hebben we op deze manier slechts één enkele handler nodig van de mogelijke uitzondering die wordt gegenereerd.
Vang meer dan één uitzondering
Als we verder gaan met het voorbeeld van de divisie waaraan we hebben gewerkt, laten we eens kijken wat er zou gebeuren als we in plaats van een 0 iets anders invoeren:

In de afbeelding kunnen we zien dat er een tekst is ingevoerd en onze handler die alleen een uitzondering van het type verwachtte ZeroDivision-fout kon niet goed afhandelen omdat het niet wist wat te doen met de nieuw gegenereerde uitzondering.
Om de nieuwe uitzondering op te vangen, voegen we gewoon een nieuw blok toe behalve om de uitzondering te kunnen behandelen Typefout dat wordt gegenereerd door een getal te delen door een tekst.
Laten we onze gecorrigeerde code eens bekijken:
 probeer: x = invoer ('Voer het eerste getal in:') y = invoer ('Voer het tweede getal in:') print x / y behalve ZeroDivisionerror: print "Het tweede getal kan niet nul zijn!" behalve TypeError: print "Dat was toch geen nummer?" 

Als we ervoor hadden gekozen om conditionals te gebruiken indien, zou deze taak ons ​​veel meer regels code hebben gekost, afgezien van het minder leesbaar maken van ons programma.
Twee uitzonderingen in hetzelfde blok vangen
Als we verschillende uitzonderingen in één blok moeten vangen behalve wat we moeten doen is ze toevoegen in de verklaring tussen haakjes, laten we de code bekijken om het beter te begrijpen:
[/ size] try: x = input ('Voer het eerste getal in:') y = input ('Voer het tweede getal in:') print x / y behalve ZeroDivisionerror: print "Het tweede getal kan niet nul zijn!" behalve TypeError: [/ size] [size = 4] print "Dat was toch geen nummer?" 

Zoals we konden zien, blijft de toepassing ons hetzelfde bericht sturen, ongeacht of er een 0 wordt ingevoerd of iets anders dan een nummer.Vond je deze tutorial leuk en hielp je hem?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave