Heim  >  Artikel  >  Backend-Entwicklung  >  Welche Möglichkeiten gibt es, Ausnahmen in Python zu behandeln?

Welche Möglichkeiten gibt es, Ausnahmen in Python zu behandeln?

anonymity
anonymityOriginal
2019-06-17 09:38:053563Durchsuche

Verwendung der Ausnahmebehandlung: Um die Robustheit und Fehlertoleranz des Programms sicherzustellen, d. h. das Programm stürzt nicht ab, wenn ein Fehler auftritt, müssen wir Ausnahmen behandeln,

Welche Möglichkeiten gibt es, Ausnahmen in Python zu behandeln?

1. Wenn die Bedingungen, unter denen der Fehler auftritt, vorhersehbar sind, müssen wir ihn verwenden, um ihn zu behandeln und zu verhindern, bevor der Fehler auftritt. Wenn die Bedingungen, unter denen der Fehler auftritt, unvorhersehbar sind, müssen Sie try..exclusive: handle verwenden, nachdem der Fehler aufgetreten ist

#Die grundlegende Syntax lautet

try:

Erkannter Codeblock

außer Ausnahmetyp:

Sobald in try eine Ausnahme erkannt wird, wird die Logik an dieser Stelle ausgeführt

AGE=10
while True:
    age=input('>>: ').strip()
    if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的
        age=int(age)
        if age == AGE:
            print('you got it')
            break

5. Detaillierte Verwendung von try. .außer...

Wir fügen Anweisungen, die Fehler verursachen können, in das Try-Modul ein und verwenden „außer“, um Ausnahmen zu behandeln. „Exception“ kann eine bestimmte Ausnahme oder eine Reihe von Ausnahmen in Klammern behandeln. Wenn nach „Exception“ keine Ausnahme angegeben wird, werden standardmäßig alle Ausnahmen behandelt. Jeder Versuch muss mindestens eine Ausnahme haben

Ausnahmeklassen können nur angegebene Ausnahmen behandeln,

#举例
try:
    f=open('a.txt')
    g=(line.strip() for line in f)
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
except StopIteration:
    f.close()

2, Multi-Branch

s1 = 'hello'
try:
    int(s1)
except IndexError as e: # 未捕获到异常,程序直接报错
    print e

3, universelle Ausnahme Exception

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)

4, Multi-Branch+Exception

s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print(e)

5, andere Ausnahmemechanismen (versuchen Sie es ... schließlich Syntax)

versuchen Sie es Die ..finally-Anweisung führt den letzten Code aus, unabhängig davon, ob eine Ausnahme auftritt. Die Syntax lautet wie folgt:

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
    print(e)

Beispiel:

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

6, Ausnahmen aktiv auslösen (Raise-Anweisung)

Wir können die Raise-Anweisung verwenden, um selbst Ausnahmen auszulösen Das Syntaxformat lautet wie folgt:

s1 = &#39;hello&#39;
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
#except Exception as e:
#    print(e)
else:
    print('try内代码块没有异常则执行我')
finally:
    print('无论异常与否,都会执行该模块,通常是进行清理工作')

Ausnahme in der Anweisung ist der Typ der Ausnahme (z. B. NameError) und der Parameter ist ein Ausnahmeparameterwert. Dieser Parameter ist optional. Wenn er nicht angegeben wird, ist der Ausnahmeparameter „None“.

Das letzte Argument ist optional (wird in der Praxis selten verwendet) und ist, falls vorhanden, das Trace-Ausnahmeobjekt.

Beispiel:

Eine Ausnahme kann eine Zeichenfolge, eine Klasse oder ein Objekt sein. Die meisten vom Python-Kernel bereitgestellten Ausnahmen sind instanziierte Klassen, bei denen es sich um Parameter einer Instanz einer Klasse handelt.

Das Definieren einer Ausnahme ist wie folgt sehr einfach:

raise [Exception [, args [, traceback]]]
def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行

7, Benutzerdefinierte Ausnahmen

Durch das Erstellen einer neuen Ausnahmeklasse können Programme ihre eigenen Ausnahmen benennen. Ausnahmen sollten normalerweise direkt oder indirekt von der Exception-Klasse erben.

Das Folgende ist ein Beispiel im Zusammenhang mit BaseException. Die Basisklasse ist BaseException, die verwendet wird, um weitere Informationen auszugeben, wenn eine Ausnahme ausgelöst wird.

Im Try-Anweisungsblock wird die Except-Blockanweisung nach der benutzerdefinierten Ausnahme ausgeführt. Die Variable e wird zum Erstellen einer Instanz der Networkerror-Klasse verwendet.

try:
    raise TypeError(&#39;类型错误&#39;)
except Exception as e:
    print(e)

8, behaupten: Bedingung bestätigen

class Networkerror(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg
 
try:
    raise Networkerror(&#39;类型错误&#39;)
except Networkerror as e:
    print(e)

9, Versuch zusammenfassen...außer

1, Fehlerbehandlung von der eigentlichen Arbeit trennen

2. Der Code ist einfacher zu organisieren und klarer, und komplexe Aufgaben sind einfacher zu implementieren

3 Es besteht kein Zweifel, dass er sicherer ist und keine Probleme verursacht zu einigen kleinen Das Programm stürzte aufgrund von Fahrlässigkeit unerwartet ab

Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, Ausnahmen in Python zu behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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