Heim > Backend-Entwicklung > Python-Tutorial > Detaillierte Erläuterung der Python-Ausnahmebehandlung

Detaillierte Erläuterung der Python-Ausnahmebehandlung

高洛峰
Freigeben: 2016-10-20 09:46:30
Original
1376 Leute haben es durchsucht

In diesem Abschnitt werden hauptsächlich die Prinzipien und Hauptformen der Ausnahmebehandlung in Python vorgestellt.


1. Was ist eine Ausnahme?


Ausnahmeobjekte werden in Python verwendet, um abnormale Situationen darzustellen. Eine Ausnahme wird ausgelöst, wenn ein Programm während der Ausführung auf einen Fehler stößt. Wenn das Ausnahmeobjekt nicht behandelt oder abgefangen wird, führt das Programm einen Backtrack aus und beendet die Ausführung.


2. Eine Ausnahme auslösen


Raise-Anweisung, gefolgt von der Exception-Ausnahmeklasse oder einer Unterklasse von Exception , Sie können in den Klammern von Exception auch Ausnahmeinformationen hinzufügen.


>>>raise Exception('message')


Hinweis: Die Exception-Klasse ist die Basis von allem Ausnahmeklassenklasse, wir können auch unsere eigene definierte Ausnahmeklasse basierend auf dieser Klasse erstellen, wie folgt:


class SomeCustomException(Exception): pass


3. Ausnahmen abfangen (try/exclusive-Anweisung)


Die try/exclusive-Anweisung wird verwendet, um Fehler im try-Anweisungsblock zu erkennen dass die außer-Anweisung Ausnahmeinformationen erfassen und verarbeiten kann.


In einem Try-Anweisungsblock können mehrere Ausnahmen ausgelöst werden:

try:
     x = input('Enter the first number: ')
     y = input('Enter the second number: ')
     print x/y
 except ZeroDivisionError:
     print "The second number can't be zero!"
 except TypeError:
     print "That wasn't a number, was it?"
Nach dem Login kopieren


Eine Ausnahmeanweisung kann mehrere Ausnahmen erfassen:

try:
     x = input('Enter the first number: ')
     y = input('Enter the second number: ')
     print x/y
 except (ZeroDivisionError, TypeError, NameError):  #注意except语句后面的小括号
     print 'Your numbers were bogus...'
Nach dem Login kopieren

Greifen Sie auf das erfasste Ausnahmeobjekt zu und drucken Sie die Ausnahmeinformationen aus:

try:
     x = input('Enter the first number: ')
     y = input('Enter the second number: ')
     print x/y
 except (ZeroDivisionError, TypeError), e:
     print e
Nach dem Login kopieren

Alle Ausnahmen abfangen, um das Übersehen unvorhersehbarer Ausnahmen zu verhindern:

try:
     x = input('Enter the first number: ')
     y = input('Enter the second number: ')
     print x/y
 except :
     print 'Someting wrong happened...'
Nach dem Login kopieren


4. else-Klausel. Zusätzlich zur Ausnahmeklausel können Sie auch die else-Klausel verwenden. Wenn im try-Block keine Ausnahme ausgelöst wird, wird die else-Klausel ausgeführt.

while 1:
     try:
         x = input('Enter the first number: ')
         y = input('Enter the second number: ')
         value = x/y
         print 'x/y is', value
     except:
         print 'Invalid input. Please try again.'
     else:
         break
Nach dem Login kopieren


Nachdem der obige Codeblock ausgeführt wurde, werden die x- und y-Werte vom Benutzer eingegeben Sind zulässig, wird die else-Unterroutine ausgeführt, wodurch das Programm die Ausführung beendet.

5. Schlussklausel. Unabhängig davon, ob in der try-Klausel eine Ausnahme auftritt, wird die final-Klausel auf jeden Fall ausgeführt und kann auch mit der else-Klausel verwendet werden. Die final-Klausel wird häufig verwendet, um den Datei- oder Netzwerk-Socket am Ende des Programms zu schließen.

try:
     1/0
 except:
     print 'Unknow variable'
 else:
     print 'That went well'
 finally:
     print 'Cleaning up'
Nach dem Login kopieren

6. Ausnahmen und Funktionen

Wenn eine Ausnahme innerhalb einer Funktion ausgelöst und nicht behandelt wird, wird sie an übergeben Der Funktionsaufruf. Wenn die Ausnahme nicht behandelt wird, wird sie an das Hauptprogramm übergeben und in Form eines Stack-Trace beendet.

def faulty():
    raise Exception('Someting is wrong!')
def ignore_exception():
    faulty()
      
def handle_exception():
    try:
        faulty()
    except Exception, e:
        print 'Exception handled!',e
  
handle_exception()
ignore_exception()
Nach dem Login kopieren

Im obigen Codeblock löst die Funktion „faulty()“ eine Ausnahme aus und wird an übergeben, nachdem die Funktion „handle_Exception()“ „faulty()“ aufruft handle_Exception() und wird somit von der try/exclusive-Anweisung verarbeitet. Es gibt keine Ausnahmebehandlung für „faulty()“ in der Funktion „ignare_Exception()“, was einen Ausnahme-Stack-Trace verursacht.

Hinweis: Die bedingte Anweisung if/esle kann die gleiche Funktion wie die Ausnahmebehandlung erfüllen, die bedingte Anweisung ist jedoch möglicherweise weniger natürlich und lesbar.


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