### Was ist nicht normal?
> Sehr einfach zu verstehen, nicht richtig funktioniert, entsprach nicht den Erwartungen.
> Ausnahme ist ein Ereignis, und das anormale Ereignis tritt während des Betriebes unserer Programmierer unsere normale Programmausführung beeinflussen.
Abnormalitäten auf zwei Arten:
1. Syntaxfehler, verursacht durch eine anormale
2. Logische Fehler durch Anomalien verursacht
### Wie Ausnahmen zu behandeln?
1. Wenn ein Fehler auftritt, ist vorhersehbar, dann können Sie die Prozesssteuerung vorbeugende Behandlung verwenden
`` `Python
# Zum Beispiel: zwei digitale Operationen, von denen keine Zahlen sind, werden die Betreiber falsch sein. Dann können Sie gehen, um zu bestimmen Prävention
n2 = 3
wenn isinstance (n2, int):
res = 10 + n2
Drucken (res)
`` `
2. Wenn ein Fehler unvorhersehbar Bedingungen auftritt, können Sie versuchen, verwenden. . . auszunehmen. . Verarbeitet, wenn ein Fehler auftritt
`` `Python
'' ‚Syntax:
Versuchen:
Die Ausnahmefehlercodes, die auftreten können,
außer:
Wenn eine Ausnahme auftritt, außer weiter zu Prozessblock
‚‘‘
# Annahme, dass Datei liest nicht existiert, wird ein Fehler auftritt, können Sie zwei Methoden zur Verarbeitung verwenden,
# 1. Bevor die Datei gelesen werden kann, um zu bestimmen, ob die aktuelle Datei vorhanden ist
# 2. Sie können auch versuchen verwenden. . . auszunehmen. . Verarbeitet, wenn ein Fehler auftritt
Versuchen:
mit offenem ( './ user.txt', 'r') als fp:
res = fp.read ()
Drucken (res)
außer:
drucken ( ‚Datei existiert nicht‘)
drucken ( ‚Programm fortzusetzen ...‘)
`` `
** Hinweis: versuchen. . auszunehmen. . Das Verfahren wird durchgeführt, nachdem der Fehler aufgetreten ist. Und wenn es ein fundamentaler Unterschied. **
### Versuchen. . . auszunehmen. . detaillierte Nutzungs
`` `Python
# Versuch. . ausnehmen detaillierte Nutzungs
# 1. Verwenden Sie versuchen. . AUSSER bestimmte Ausnahmeverarbeitung. Wenn eine nicht-spezifizierte Ausnahme ausgelöst, können Sie nicht Griff
Versuchen:
s1 = 'Hallo'
int (s1) # wirft Valueerror
ausnehmen als e Valueerror:
# Mit Ausnahme Indexerror als e: # Wenn eine nicht spezifizierte Ausnahme ausgelöst, können Sie nicht Griff
print (e)
# 2. Multi-Zweigverarbeitungsausnahmeklasse. Verschiedene Ausnahme außer Verarbeitung gehen
s1 = 'Hallo'
Versuchen:
# Int (s1) # Valueerror
s1 [5] # Indexerror
ausnehmen als Indexerror e:
PRINT ( 'Indexerror', e)
ausnehmen KeyError als e:
PRINT ( 'KeyError', e)
ausnehmen als e Valueerror:
PRINT ( 'Valueerror', e)
# 3. Allgemeine Ausnahmeklassen Ausnahme
s1 = 'Welt'
Versuchen:
int (s1)
ausnehmen Ausnahme als e:
drucken ( 'Exception ===', e)
# 4 + mehrfach verzweigten allgemeinen Ausnahmeklasse Ausnahmeklasse. Nachdem diese eine Ausnahme ausgelöst wird folgen eine entsprechende Reihenfolge von der Ausnahmeklasse nach unten auszuführen.
s1 = 'Hallo'
Versuchen:
# Int (s1) # Valueerror
s1 [5] # Indexerror
ausnehmen als Indexerror e:
PRINT ( 'Indexerror', e)
ausnehmen KeyError als e:
PRINT ( 'KeyError', e)
ausnehmen als e Valueerror:
PRINT ( 'Valueerror', e)
ausnehmen Ausnahme als e:
PRINT ( 'Exception', e)
# 5. try ... außer ... else ...
s1 = 'Hallo'
Versuchen:
str (S1)
ausnehmen als Indexerror e:
PRINT ( 'Indexerror', e)
ausnehmen als e Valueerror:
PRINT ( 'Valueerror', e)
ausnehmen Ausnahme als e:
PRINT ( 'Exception', e)
sonst:
drucken ( ‚wenn der try-Block ohne Auslösen einer Ausnahme, Ausführung‘)
# 6.try ... except..else..finally
# Schließlich, ob eine Ausnahme ausgelöst wird, wird es ausgeführt. Oft verwendet, um einige Bereinigung durchzuführen.
s1 = 'Hallo'
Versuchen:
int (s1)
( ‚Vorherigen Code, wenn eine Ausnahme ausgelöst wird, wird der Block nicht weiter ..‘) drucken
ausnehmen als Indexerror e:
PRINT ( 'Indexerror', e)
ausnehmen als e Valueerror:
PRINT ( 'Valueerror', e)
ausnehmen Ausnahme als e:
PRINT ( 'Exception', e)
sonst:
drucken ( ‚wenn der try-Block ohne Auslösen einer Ausnahme, Ausführung‘)
schließlich:
PRINT ( ‚unabhängig davon, ob eine Ausnahme ist, wird dieser Codeblock ausgeführt werden‘)
PRINT ( ‚Code, wenn die obige Verarbeitung und führt eine abnormal, dann die Codeausführung weiter hinter‘)
# 7. Verwenden Sie erhöhen, die Initiative ergreifen, eine Ausnahme zu werfen
Versuchen:
# Sie können die Initiative verwenden, um raise eine Ausnahme auslöst, und die Ausnahme Informationssatz
Erhöhung Exception ( 'Fehler')
ausnehmen Ausnahme als e:
PRINT ( 'Exception', e)
# 8. Assertion Assertion
assert 1 == 1 #, wenn dieser Ausdruck ist richtig, nichts tun
assert 2 == 1 # Wenn die Fehler hinter dem Ausdruck, direkt geworfen AssertionError
`` `
Benutzerdefinierte Exception-Handler-Klasse ###
> Wenn eine Ausnahme auftritt, werden die abnormalen Informationen in das Protokoll geschrieben.
##### Zurückverfolgungsmodul zurück https://docs.python.org/3.7/library/traceback.html
##### Logging-Modul Protokolle https://docs.python.org/3.7/library/logging.html
`` `Python
# Log individuelle Ausnahmebehandlung Klassen
Klasse MyException ():
def __init __ (self):
Import Zurückverfolgungs
Import Protokollierung
Die Grundkonfiguration # Protokollierung
logging.basicConfig (
filename = ‚/ error.log‘, # Protokollspeicher-Dateien und Verzeichnisse
format = '% (asctime) s% (levelname) s \ n% (message) s', # Format in Protokollformat gespeichert
DateFmt = '% Y-% m-% d% H:% M:% S'
)
# Schreiben log
logging.error (traceback.format_exc ())
# Klasse mit einem benutzerdefinierten Exception-Handler
Versuchen:
int ( 'BB')
außer:
drucken ( "hier in Ausnahmebehandlung)
MyException () # Codeblock Anruf Ausnahme benutzerdefinierte Ausnahmeklasse Handhabung
`` `
### Standard-Exception-Klassen
| Exception Name | Beschreibung |
| : -----------------------: | : ------------------------------------------------: |
| BaseException | Basisklasse für alle Ausnahmen |
| Systemexit | Dolmetscher Ausgang angefordert |
| KeyboardInterrupt | Anwender-Interrupt Ausführen (in der Regel geben Sie ^ C) |
| Exception | Allgemeiner Fehler Basisklasse |
| StopIteration | Iterator nicht mehr Wert |
| GeneratorExit | Ausnahmen die Benachrichtigung Generator (Generator) zurückzuziehen auftritt |
| Standarderror | alle integrierten Standardbasisklasse für Ausnahmen |
| ArithmeticError | alle Basisklasse numerische Fehler |
| FloatingPointError | Gleitkommazahlen Berechnungsfehler |
| OverflowError | numerische Operation überschreitet die Höchstgrenze |
| Die Zerodivisionerror | Addition (oder Modul) von Null (alle Datentypen) |
| AssertionError | Assertionsfehler |
| Attribute | Objekt nicht diese Eigenschaft |
| EOFError | kein Einbau-Eingang, die EOF-Markierung erreichen |
| EnvironmentError | Betriebssystemfehler Basisklasse |
| IOError | Ein- / Ausgabeoperationen zum Scheitern verurteilt |
| OSError | Betriebssystemfehler |
| WindowsError | Systemaufruf fehlschlägt |
| Import | Import-Modul / Objekt ist fehlgeschlagen |
| LookupError | Basisklasse für ungültige Datenabfragen |
| Indexerror | Folge ohne diesen Index (Index) |
| KeyError | Karte nicht über diesen Schlüssel |
| Memory | Speicherüberlauf-Fehler (für Python-Interpreter ist nicht tödlich) |
| Nameerror | undeclared / initialize Objekte (keine Attribute) |
| UnboundLocalError | Zugang nicht initialisierte lokale Variable |
| Reference | schwache Referenz (Weak reference) versucht das Objekt zuzugreifen Speicherbereinigungs gewesen |
| Runtime | allgemeiner Laufzeitfehler |
| NotImplementedError | unrealisierte-Methode |
| Syntax | Python Syntaxfehler |
| IndentationError | Einbuchtung Fehler |
| TabError | Tab und Räume mischen |
| Systemerror | allgemeine Erklärung des Systemfehlers |
| Typeerror | ungültig für die Art der Operation |
| Valueerror | bestanden ungültige Parameter |
| UnicodeError | Unicode Fehler |
| UnicodeDecodeError | wenn Unicode Fehler Decodierung |
| UnicodeEncodeError | wenn Unicode Fehler kodiert |
| UnicodeTranslateError | wenn Unicode-Konvertierung Fehler |
| Achtung | Warnung Basisklasse |
| DeprecationWarning | über veraltetes Feature Warnung |
| FutureWarning | Über semantische Struktur der Zukunft Warnung ändern |
| Überlaufwarnung | alt automatisch auf eine lange ganze Zahl gefördert (lang) Warnung |
| PendingDeprecationWarning | über Funktionen Warnung aufgegeben werden |
| RuntimeWarning | verdächtige Laufzeitverhalten (Laufzeitverhalten) Warnung |
| SyntaxWarning | suspekt Grammatik Warnung |
| UserWarning | Benutzercode erzeugt Warnung |
Mastery Lernmethode wird als beugen zu überholen!
Lernen zu Affen: die Leistungen ihrer eigenen nur ein Boutique!