Heim > Backend-Entwicklung > Python-Tutorial > Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen

Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen

Freigeben: 2023-07-25 15:42:08
nach vorne
599 Leute haben es durchsucht

1. Einführung in Ausnahmen

Wenn Python einen Fehler erkennt, kann der Interpreter die Ausführung nicht fortsetzen, es werden jedoch einige Fehlermeldungen angezeigt. Dies ist die sogenannte „Ausnahme“.


2. Fallanalyse

Öffnen Sie eine nicht vorhandene Datei 123.txt. Wenn die Datei 123.txt nicht gefunden werden kann, wird uns ein Fehler vom Typ IOError gemeldet: Keine solche Datei oder Verzeichnis: 123.txt (Es gibt keine Datei oder kein Verzeichnis wie 123.txt).

print'-----test--1---'
open('123.txt','r')
print '-----test--2---'
Nach dem Login kopieren

Laufergebnis:

Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen

<1>Ausnahmeversuch abfangen...außer...

Beispiel:

try:
    print(&#39;-----test--1---&#39;)
    open(&#39;123.txt&#39;,&#39;r&#39;)
    print(&#39;-----test--2---&#39;)
except IOError:
    pass
Nach dem Login kopieren

Laufergebnis:

Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen

Erklärung:

  • Dieses Programm kann keine Fehler erkennen, da die IOError-Ausnahme mit „Exception“ abgefangen wird und eine Methode zur Behandlung dieser Ausnahme hinzugefügt wird.

  • pass 表示实现了相应的实现,但什么也不做;如果把pass改为print语句,那么就会输出其他信息。

小总结 :

  • 把可能出现问题的代码,放在try中。

  • 把处理异常的代码,放在except中。

<2> except捕获多个异常

例 :

try:
    print(num)
except IOError:
    print(&#39;产生错误了&#39;)
Nach dem Login kopieren

运行结果 :

Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen

想一想:

上例程序,已经使用except来捕获异常了,为什么还会看到错误的信息提示?

答:

except捕获的错误类型是IOError,而此时程序产生的异常为 NameError ,所以except没有生效。

修改后的代码为 :

try:
   print(num)
except NameError:
    print(&#39;产生错误了&#39;)
Nach dem Login kopieren

运行结果

Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen

实际开发中,捕获多个异常的方式,如下:
#coding=utf-8
try:
    print(&#39;-----test--1---&#39;)
    open(&#39;123.txt&#39;,&#39;r&#39;) # 如果123.txt文件不存在,那么会产生 IOError 异常
    print(&#39;-----test--2---&#39;)
    print(num)# 如果num变量没有定义,那么会产生 NameError 异常


except (IOError,NameError): 
    #如果想通过一次except捕获到多个异常可以用一个元组的方式
Nach dem Login kopieren
注意:

当捕获多个异常时,可以把要捕获的异常的名字,放到except 后,并使用元组的方式仅进行存储。


<3>获取异常的信息描述

try:
    open("a.txt")
except(NameError,IOError) as result:
    print("捕抓到异常")
    print("信息展示:",result)
Nach dem Login kopieren

运行结果:

Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen


<4>捕获所有异常

try:
    open("a.txt")
except Exception as result:
    print("捕抓到异常")
    print("信息展示:",result)
Nach dem Login kopieren

运行结果:

Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen

<5> else

咱们应该对else并不陌生,在if中,它的作用是当条件不满足时执行的实行;同样在try...except...中也是如此,即如果没有捕获到异常,那么就执行else中的事情。

try:
    num = 100
    print(num)
except NameError as errorMsg:
    print(&#39;产生错误了:%s&#39; % errorMsg)
else:
    print(&#39;没有捕获到异常,真高兴&#39;)
Nach dem Login kopieren

运行结果如下:

Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen

<6> try...finally...

try...finally...语句用来表达这样的情况:

在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。比如文件关闭,释放锁,把数据库连接返还给连接池等。

demo:

import time
try:
    f = open(&#39;test.txt&#39;)
    try:
        while True:
            content = f.readline()
            if len(content) == 0:
                break
            time.sleep(2)
            print(content)
    except:
        #如果在读取文件的过程中,产生了异常,那么就会捕获到
        #比如 按下了 ctrl+c
        pass
    finally:
        f.close()
        print(&#39;关闭文件&#39;)
except:
    print("没有这个文件")
Nach dem Login kopieren

运行结果:

Ein Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen

说明:

test.txt文件中每一行数据打印,但是我有意在每打印一行之前用time.sleep方法暂停2秒钟。这样做的原因是让程序运行得慢一些。在程序运行的时候,按Ctrl+c中断(取消)程序。

我们可以观察到KeyboardInterrupt异常被触发,程序退出。但是在程序退出之前,finally从句仍然被执行,把文件关闭。


三、总结

本文讲解了Python基础之异常知识 ,介绍了常见的异常操作,用丰富的案例,帮助大家更好的去了解异常常见的的基础操作。

Das obige ist der detaillierte Inhalt vonEin Artikel, der Ihnen hilft, die Einführung und Fallanalyse von Python-Ausnahmen zu verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:Go语言进阶学习
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