Python - Erweiterte Ausnahmebehandlung

Inhaltsverzeichnis
Sobald eine Ausnahme ausgelöst wird, ist es unsere Pflicht, sie zu behandeln. Auf diese Weise kann unser Programm eine Aktion ausführen, eine Nachricht ausgeben, die Korrektur des vom Benutzer eingegebenen Parameters anfordern, kurz gesagt, viele Möglichkeiten .
Ausnahmen abfangen
Wie bereits erwähnt, ist es wichtig, wenn wir eine Ausnahme sehen, dass wir sie auf diese Weise abfangen können. Wir können entscheiden, was das Programm tun soll, wenn diese Situation eintritt. Dazu verwenden wir die Befehle versuchen / außer. Um das Obige zu demonstrieren, werden wir ein sehr einfaches Divisionsprogramm analysieren, da wir wissen, dass wir eine Zahl nicht durch 0 teilen können, sodass dies eine Ausnahme auslöst.
Beginnen wir mit dem Erstellen unseres Codes. Denken Sie daran, dass wir dies in jedem Texteditor tun können und die Datei mit der Erweiterung .py speichern müssen, damit wir sie auf unserer Befehlszeile oder Konsole ausführen können.
 x = Eingabe ('Geben Sie die erste Zahl ein:') y = Eingabe ('Geben Sie die zweite Zahl ein:') Drucken x / y [/Größe] [Größe = 4]

Dies funktioniert einwandfrei, bis der Benutzer als zweites Argument den Wert 0 eingibt. Dies führt zu einer Ausnahme, wie wir in der folgenden Abbildung des Programmlaufs sehen können:

Wir können dies verhindern, indem wir die versuchen / außer die wir am Anfang dieses Abschnitts gesehen hatten, sehen wir uns unseren korrigierten Code an:
 try: x = Eingabe ('Geben Sie die erste Zahl ein:') y = Eingabe ('Geben Sie die zweite Zahl ein:') print x / y außer ZeroDivisionerror: print "Die zweite Zahl darf nicht Null sein!" 

Dieser Umgang mit diesem Fall ist recht sauber, trotz allem könnte man das auch mit einem simplen sagen Wenn das würde bedeuten, dass der Wert von Ja Es wäre nicht 0, wäre eine adäquate Lösung, aber wenn wir unserem Programm mehr Divisionen hinzufügen würden, würden wir mehr Bedingungen benötigen, stattdessen brauchen wir auf diese Weise nur einen einzigen Handler der möglichen Ausnahme, die generiert wird.
Mehr als eine Ausnahme fangen
Fahren wir mit dem Beispiel der Division fort, an der wir gearbeitet haben, und sehen wir uns an, was passieren würde, wenn wir anstelle einer 0 etwas anderes eingeben:

Im Bild sehen wir, dass ein Text eingegeben wurde und unser Handler nur eine Ausnahme vom Typ erwartet ZeroDivisionerror konnte keine ordnungsgemäße Behandlung durchführen, da er nicht wusste, was er mit der neu generierten Ausnahme anfangen sollte.
Um die neue Ausnahme abzufangen, fügen wir einfach einen neuen Block hinzu außer um mit der Ausnahme umgehen zu können Typfehler die durch Division einer Zahl durch einen Text erzeugt wird.
Sehen wir uns unseren korrigierten Code an:
 try: x = Eingabe ('Geben Sie die erste Zahl ein:') y = Eingabe ('Geben Sie die zweite Zahl ein:') print x / y außer ZeroDivisionerror: print "Die zweite Zahl darf nicht Null sein!" außer TypeError: print "Das war keine Zahl, oder?" 

Wenn wir uns für die Verwendung von Bedingungen entschieden hätten Wenn, hätte uns diese Aufgabe viel mehr Codezeilen gekostet, abgesehen davon, dass unser Programm weniger lesbar ist.
Zwei Ausnahmen im selben Block abfangen
Wenn wir mehrere Ausnahmen in einem einzigen Block abfangen müssen außer Was wir tun müssen, ist, sie in der Deklaration in einer Klammer hinzuzufügen. Sehen wir uns den Code an, um ihn besser zu verstehen:
[/size] try: x = Eingabe ('Geben Sie die erste Zahl ein:') y = Eingabe ('Geben Sie die zweite Zahl ein:') print x / y außer ZeroDivisionerror: print "Die zweite Zahl darf nicht Null sein!" außer TypeError: [/size] [size = 4] print "Das war keine Zahl, oder?" 

Wie wir sehen konnten, sendet uns die Anwendung in jedem Fall die gleiche Nachricht, unabhängig davon, ob eine 0 oder etwas anderes als eine Zahl eingegeben wird.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave