python異常(概念 捕獲 傳遞 丟擲)

2021-09-24 00:15:06 字數 3304 閱讀 2188

01. 異常的概念

程式在執行時,如果python 直譯器遇到到乙個錯誤,會停止程式的執行,並且提示一些錯誤資訊,這就是異常

程式停止執行並且提示錯誤資訊這個動作,我們通常稱之為:丟擲(raise)異常

程式開發時,很難將所有的特殊情況都處理的面面俱到,通過異常捕獲可以針對突發事件做集中的處理,從而保證程式的穩定性和健壯性

02. 捕獲異常

2.1 簡單的捕獲異常語法

在程式開發中,如果對某些**的執行不能確定是否正確,可以增加try(嘗試)來捕獲異常

捕獲異常最簡單的語法格式:

try嘗試,下方編寫要嘗試**,不確定是否能夠正常執行的**

except如果不是,下方編寫嘗試失敗的**

簡單異常捕獲演練 —— 要求使用者輸入整數

2.2 錯誤型別捕獲

在程式執行時,可能會遇到不同型別的異常,並且需要針對不同型別的異常,做出不同的響應,這個時候,就需要捕獲錯誤型別了

語法如下:

當python直譯器丟擲異常時,最後一行錯誤資訊的第乙個單詞,就是錯誤型別

異常型別捕獲演練 —— 要求使用者輸入整數

需求

提示使用者輸入乙個整數

使用8除以使用者輸入的整數並且輸出

捕獲未知錯誤

在開發時,要預判到所有可能出現的錯誤,還是有一定難度的

如果希望程式無論出現任何錯誤,都不會因為python直譯器丟擲異常而被終止,可以再增加乙個except

語法如下:

2.3 異常捕獲完整語法

在實際開發中,為了能夠處理複雜的異常情況,完整的異常語法如下:

有關完整語法的應用場景,在後續學習中,結合實際的案例會更好理解

現在先對這個語法結構有個印象即可

else只有在沒有異常時才會執行的**

finally無論是否有異常,都會執行的**

之前乙個演練的完整捕獲異常的**如下:

03. 異常的傳遞

異常的傳遞—— 當函式/方法執行出現異常,會將異常傳遞給 函式/方法 的呼叫一方

如果傳遞到主程式,仍然沒有異常處理,程式才會被終止

提示在開發中,可以在主函式中增加異常捕獲

而在主函式中呼叫的其他函式,只要出現異常,都會傳遞到主函式的異常捕獲

這樣就不需要在**中,增加大量的異常捕獲,能夠保證**的整潔

需求

定義函式demo1()提示使用者輸入乙個整數並且返回

定義函式demo2()呼叫demo1()

在主程式中呼叫demo2()

04. 丟擲raise異常

4.1 應用場景

在開發中,除了**執行出錯python直譯器會丟擲異常之外

還可以根據應用程式特有的業務需求主動丟擲異常

示例

提示使用者輸入密碼,如果長度少於 8,丟擲異常

注意

當前函式只負責提示使用者輸入密碼,如果密碼長度不正確,需要其他的函式進行額外處理

因此可以丟擲異常,由其他需要處理的函式捕獲異常

4.2 丟擲異常

python中提供了乙個exception異常類

在開發時,如果滿足特定業務需求時,希望丟擲異常,可以:

建立乙個exception的物件

使用raise關鍵字丟擲異常物件

需求

定義input_password函式,提示使用者輸入密碼

如果使用者輸入長度 < 8,丟擲異常

如果使用者輸入長度 >=8,返回輸入的密碼

c 溢位拋異常 C 捕獲堆疊溢位異常

正確的方法是修復溢位,但是.你可以給自己乙個更大的一疊 using system.threading thread t new thread threaddelegate,stacksizeinbytes t.start 您可以使用system.diagnostis.stacktrace frame...

python異常捕獲 如何捕獲Python中的異常

python 提供了try except語句捕獲並處理異常,該異常處理語句的基本語法結構如下 try 可能產生異常的 塊 except error1,error2,as e 處理異常的 塊1 except error3,error4,as e 處理異常的 塊2該格式中,括起來的部分可以使用,也可以省...

python異常捕獲

python的異常處理如c c 的結構一樣。python用try.except.c c 則用try.catch.並不難理解。在對具體錯誤的獲取則有點不同,主要是語法的差異上。c 在catch後可生成相應乙個異常的類,然後可通過類物件獲取相關的錯誤資訊。而python則不同,它在獲取錯誤資訊有點奇怪,...