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則不同,它在獲取錯誤資訊有點奇怪,...