日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pyqt5 捕获异常确保程序不退出_Python异常处理详解(基础篇十一)

發布時間:2025/3/15 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyqt5 捕获异常确保程序不退出_Python异常处理详解(基础篇十一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 異常

1 什么是異常?

示例:

說明:

打開一個不存在的文件123.txt,當找不到123.txt 文件時,就會拋出給我們一個IOError類型的錯誤,No such file or directory:123.txt (沒有123.txt這樣的文件或目錄)

異常:

當Python檢測到一個錯誤時,解釋器就無法繼續執行了,反而出現了一些錯誤的提示,這就是所謂的"異常"

2 捕獲異常

<1> 捕獲異常 try...except...

示例:

說明:

  • 此程序看不到任何錯誤,因為用except 捕獲到了IOError異常,并添加了處理的方法
  • pass 表示實現了相應的實現,但什么也不做;如果把pass改為print語句,那么就會輸出其他信息

總結:

  • 把可能出現問題的代碼,放在try中
  • 把處理異常的代碼,放在except中

<2> except捕獲多個異常

示例:

想一想:

上例程序,已經使用except來捕獲異常了,為什么還會看到錯誤的信息提示?

答:

except捕獲的錯誤類型是IOError,而此時程序產生的異常為 NameError ,所以except沒有生效

修改后:

實際開發中,捕獲多個異常的方式,如下:

小總結:

  • 當捕獲多個異常時,可以把要捕獲的異常的名字,放到except 后,并使用元組的方式僅進行存儲

<3> 獲取異常的信息描述

<4> 捕獲所有異常

<5> else

在if中,它的作用是當條件不滿足時執行的實行;同樣在try...except...中也是如此,即如果沒有捕獲到異常,那么就執行else中的事情

<6> try...finally...

try...finally...語句用來表達這樣的情況:

在程序中,如果一個段代碼必須要執行,即無論異常是否產生都要執行,那么此時就需要使用finally。 比如文件關閉,釋放鎖,把數據庫連接返還給連接池等

說明:

test.txt文件中每一行數據打印,但是我有意在每打印一行之前用time.sleep方法暫停2秒鐘。這樣做的原因是讓程序運行得慢一些。在程序運行的時候,按Ctrl+c中斷(取消)程序。
我們可以觀察到KeyboardInterrupt異常被觸發,程序退出。但是在程序退出之前,finally從句仍然被執行,把文件關閉。

3 異常的傳遞

<1> try嵌套中

總結:

  • 如果try嵌套,那么如果里面的try沒有捕獲到這個異常,那么外面的try會接收到這個異常,然后進行處理,如果外邊的try依然沒有捕獲到,那么再進行傳遞。

<2> 函數嵌套調用中

總結:

  • 如果一個異常是在一個函數中產生的,例如函數A---->函數B---->函數C,而異常是在函數C中產生的,那么如果函數C中沒有對這個異常進行處理,那么這個異常會傳遞到函數B中,如果函數B有異常處理那么就會按照函數B的處理方式進行執行;如果函數B也沒有異常處理,那么這個異常會繼續傳遞,以此類推。。。如果所有的函數都沒有處理,那么此時就會進行異常的默認處理,即通常見到的那樣
  • 注意觀察上圖中,當調用test3函數時,在test1函數內部產生了異常,此異常被傳遞到test3函數中完成了異常處理,而當異常處理完后,并沒有返回到函數test1中進行執行,而是在函數test3中繼續執行

4 自定義異常

你可以用raise語句來引發一個異常。異常/錯誤對象必須有一個名字,且它們應是Error或Exception類的子類

下面是一個引發異常的例子:

注意點:

以上程序中,關于代碼#super().__init__()的說明

這一行代碼,可以調用也可以不調用,建議調用,因為__init__方法往往是用來對創建完的對象進行初始化工作,如果在子類中重寫了父類的__init__方法,即意味著父類中的很多初始化工作沒有做,這樣就不保證程序的穩定了,所以在以后的開發中,如果重寫了父類的__init__方法,最好是先調用父類的這個方法,然后再添加自己的功能

5 拋出異常

可以用raise語句來引發一個異常

總結

以上是生活随笔為你收集整理的pyqt5 捕获异常确保程序不退出_Python异常处理详解(基础篇十一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。