Heim > Backend-Entwicklung > Python-Tutorial > Python-Lernen – Ausnahmen

Python-Lernen – Ausnahmen

巴扎黑
Freigeben: 2016-12-09 14:05:16
Original
1364 Leute haben es durchsucht

Ausnahme

Wenn in Ihrem Programm etwas Ungewöhnliches auftritt, tritt eine Ausnahme auf. Wenn Sie beispielsweise eine bestimmte Datei lesen möchten und diese Datei nicht vorhanden ist. Oder Sie haben es versehentlich gelöscht, während das Programm ausgeführt wurde. Die oben genannten Situationen können mithilfe von Ausnahmen behandelt werden.
Was passiert, wenn Ihr Programm ungültige Anweisungen enthält? Python wird mit Situationen wie dieser umgehen, indem es einen Fehler auslöst und Ihnen mitteilt, dass ein Fehler vorliegt.

try..exclusive

1. Behandlung von Ausnahmen
Wir können die try..exclusive-Anweisung verwenden, um Ausnahmen zu behandeln. Wir platzieren unsere normalen Anweisungen in Try-Blöcken und unsere Fehlerbehandlungsanweisungen in Except-Blöcken.
Ein Beispiel für die Behandlung von Ausnahmen ist wie folgt:

import sys
try:
    s = raw_input('Enter something --> ')
except EOFError:
    print '\nWhy did you do an EOF on me?'
    sys.exit()
except:
    print '\nSome error/exception occurred.' 
print 'Done'
Nach dem Login kopieren

Ausgabe:

Python-Code

Enter something --> +  
Done
Nach dem Login kopieren

Wir setzen alle Anweisungen, die Fehler verursachen können, in try Blöcke und behandeln dann alle Fehler und Ausnahmen in der Ausnahmeklausel/dem Ausnahmeblock.
Die Ausnahmeklausel kann speziell einen einzelnen Fehler oder eine einzelne Ausnahme oder eine Gruppe von Fehlern/Ausnahmen in Klammern behandeln. Wenn kein Fehler- oder Ausnahmename angegeben wird, werden alle Fehler und Ausnahmen behandelt. Zu jeder Try-Klausel gehört mindestens eine Ausnahme-Klausel.
Wenn ein Fehler oder eine Ausnahme nicht behandelt wird, wird der Standard-Python-Handler aufgerufen. Dadurch wird das Programm beendet und eine Meldung ausgegeben, was wir bereits gesehen haben.
Sie können den try..catch-Block auch mit einer else-Klausel verknüpfen. Wenn keine Ausnahme auftritt, wird die else-Klausel ausgeführt.

2. Eine Ausnahme auslösen
Wir können auch das Ausnahmeobjekt abrufen, um weitere Informationen zu dieser Ausnahme zu erhalten.
Mit der raise-Anweisung können Sie eine Ausnahme auslösen. Außerdem müssen Sie den Namen des Fehlers/der Ausnahme und das Ausnahmeobjekt angeben, das mit der Ausnahme ausgelöst wurde. Die Fehler oder Ausnahmen, die Sie auslösen können, sollten eine direkt oder indirekt abgeleitete Klasse der Fehler- bzw. Ausnahmeklasse sein.
Ein Beispiel dafür, wie eine Ausnahme ausgelöst wird, ist wie folgt:

class ShortInputException(Exception):
    '''A user-defined exception class.'''
    def __init__(self, length, atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast
try:
    s = raw_input('Enter something --> ')
    if len(s) < 3:
        raise ShortInputException(len(s), 3)
except EOFError:
    print &#39;\nWhy did you do an EOF on me?&#39;
except ShortInputException, x:
    print &#39;ShortInputException: The input was of length %d, \
          was expecting at least %d&#39; % (x.length, x.atleast)
else:
    print &#39;No exception was raised.&#39;
Nach dem Login kopieren

Ausgabe:

Python-Code

Enter something --> 2222  
No exception was raised.  
Enter something --> 1  
ShortInputException: The input was of length 1,           was expecting at least 3
Nach dem Login kopieren

Hier haben wir unseren eigenen erstellt Ausnahmetyp, eigentlich können wir jede vordefinierte Ausnahme/jeden vordefinierten Fehler verwenden. Dieser neue Ausnahmetyp ist die ShortInputException-Klasse. Es verfügt über zwei Felder: „length“ ist die Länge der gegebenen Eingabe und „atleast“ die vom Programm erwartete Mindestlänge.
In der Ausnahmeklausel stellen wir die Fehlerklasse und Variablen bereit, die zur Darstellung des Fehler-/Ausnahmeobjekts verwendet werden. Dies ähnelt dem Konzept von Formalparametern und Aktualparametern in Funktionsaufrufen. In dieser speziellen Ausnahmeklausel verwenden wir die Felder „Länge“ und „Atleast“ des Ausnahmeobjekts, um eine entsprechende Nachricht an den Benutzer auszugeben.

Versuchen Sie es endlich.

Was sollten Sie tun, wenn Sie eine Datei lesen und die Datei unabhängig davon schließen möchten, ob eine Ausnahme auftritt? Dies kann mit dem Block „finally“ erfolgen. Beachten Sie, dass Sie innerhalb eines Try-Blocks sowohl eine Except-Klausel als auch einen Final-Block verwenden können. Wenn Sie sie gleichzeitig verwenden möchten, müssen Sie sie ineinander einbetten.
Ein Beispiel für die Verwendung von „final“ lautet wie folgt:

import time
f = file(&#39;poem.txt&#39;)
try:  
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        time.sleep(2)
        print line,
finally:
    f.close()
    print &#39;Cleaning up...closed the file&#39;
Nach dem Login kopieren

Ausgabe:

Python-Code

Programming is fun  
When the work is done  
if you wanna make your work also fun:  
        use Python!  
Cleaning up...closed the file
Nach dem Login kopieren

Wir führen die übliche Dateilesearbeit durch, aber Ich drucke absichtlich jedes Mal. Verwenden Sie die Methode time.sleep, um vor einer Zeile 2 Sekunden lang eine Pause einzulegen. Der Grund dafür ist, dass das Programm langsamer läuft (Python läuft naturgemäß normalerweise sehr schnell). Während das Programm läuft, drücken Sie Strg-C, um das Programm zu unterbrechen/abzubrechen. Wir können beobachten, dass die KeyboardInterrupt-Ausnahme ausgelöst wird und das Programm beendet wird. Doch bevor das Programm beendet wird, wird noch die final-Klausel ausgeführt und die Datei geschlossen.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage