Heim > Artikel > Backend-Entwicklung > Python-Fehler- und Ausnahmebehandlung
Der Inhalt dieses Artikels befasst sich mit der Fehler- und Ausnahmebehandlung in Python. Ich hoffe, dass er für Freunde hilfreich ist.
1: Syntaxfehler
Mit Grammatik vertraut!
2: Ausnahme
①Beim Drucken von Fehlerinformationen wird der Ausnahmetyp als integrierter Name der Ausnahme angezeigt und die spezifischen Informationen werden in Form eines Aufrufstapels angezeigt
②Häufige Ausnahmen:
NameError, NameError, > KeyError Anfordern eines nicht vorhandenen Wörterbuchschlüssels
IOError Eingabe- und Ausgabefehler
AttributeError Versuchen Sie, auf unbekannte Objekteigenschaften zuzugreifen
Drei: Ausnahmebehandlung
while True: try: x = int(input("Please enter a number: ")) break except ValueError: print("Oops! That was no valid number. Try again ")
⑤ Wenn eine Ausnahme mit keiner Ausnahme übereinstimmt, wird die Ausnahme an den oberen Versuch übergeben.
⑥Eine try-Anweisung kann mehrere Except-Klauseln enthalten, um verschiedene spezifische Ausnahmen zu behandeln. Es wird höchstens eine Verzweigung ausgeführt.
⑦Eine Ausnahmeklausel kann mehrere Ausnahmen gleichzeitig behandeln, und diese Ausnahmen werden in Klammern gesetzt, um ein Tupel zu werden.
except (RuntimeError, TypeError, NameError): pass
Python verwendet die Raise-Anweisung, um eine angegebene Ausnahme auszulösen
raise ist die einzige Ausnahme Der Parameter gibt die auszulösende Ausnahme an.
Sie können eine eigene neue Ausnahmeklasse erstellen Ausnahmen.
Die Ausnahmeklasse erbt von der Ausnahmeklasse und kann direkt oder indirekt geerbt werden.
ein gängiger Ansatz besteht darin, eine grundlegende Ausnahmeklasse für dieses Paket zu erstellen,
Fünf: Bereinigungsverhalten definieren
try: raise KeyboardInterrupt finanlly: print("dooo")
assert ist äquivalent zu ein boolesches wahres Urteil und löst eine Ausnahme AssertionError
aus, wenn diese nicht erfüllt ist. Zweck: Defensives Programm
Referenz: „Der beste Zeitpunkt, um Behauptungen in Python zu verwenden 》
# ---------------------------------------------------------------------# # 异常处理 # ---------------------------------------------------------------------# while True: try: x = int(input("Please enter a number: ")) break except ValueError: print("Oops! That was no valid number. Try again ") # ---------------------------------------------------------------------# # 抛出异常 # ---------------------------------------------------------------------# """ try: raise NameError('HiThere') except NameError: print('An exception flew by!') raise """ # ---------------------------------------------------------------------# # 用户自定义异常 # ---------------------------------------------------------------------# class MyError(Exception): # 继承自Exception def __init__(self, value): # 构造函数重写 self.value = value def __str__(self): return repr(self.value) try: raise MyError(2*2) # 抛出异常 except MyError as e: print('My exception occurred, value:', e.value) # 当创建一个模块有可能抛出多种不同的异常时, # 一种通常的做法是为这个包建立一个基础异常类, # 然后基于这个基础类为不同的错误情况创建不同的子类 class Error(Exception): """Base class for exceptions in this module.""" pass class InputError(Error): """Exception raised for errors in the input. Attributes: expression -- input expression in which the error occurred message -- explanation of the error """ def __init__(self, expression, message): self.expression = expression self.message = message class TransitionError(Error): """Raised when an operation attempts a state transition that's not allowed. Attributes: previous -- state at beginning of transition next -- attempted new state message -- explanation of why the specific transition is not allowed """ def __init__(self, previous, next1, message): self.previous = previous self.next = next1 self.message = message try: raise InputError(2*2, 45) # 抛出异常 except InputError: # 处理异常 print('My exception occurred') # ---------------------------------------------------------------------# # 定义清理行为 # ---------------------------------------------------------------------# def divide(x, y): try: result = x / y except ZeroDivisionError: print("division by zero!") else: # 没有异常的时执行 print("result is", result) finally: # 无论在任何情况下都会执行的清理行为 print("executing finally clause") # 一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出, # 而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出 # divide("2", "1") #从测试代码
Das obige ist der detaillierte Inhalt vonPython-Fehler- und Ausnahmebehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!