您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python異常處理機制的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
def num(a, b): a = int(a) b = int(b) result = a / b print(result)
上面是一個很簡單的除法的函數,語法上沒有任何問題。
但是如果調用函數的時候,傳入字符串。則會拋出異常ValueError。且后續代碼不會執行
再比如除數是0。那也將拋出異常ZeroDivisionError
。且后續代碼不會執行
格式
try: #程序代碼 except [errorNmae]: #出現異常后的處理代碼 [else:] #當try中代碼沒有問題時,會執行else。但是try中不能有retrun [finally:] #最后一定會被執行的代碼
try: num('a', 'b') except: print('你的程序出現了大問題!!!') print('--------->end')
通過try-except處理異常,當捕獲到異常時,將執行except部分的代碼。且程序不會終端,繼續向下執行。
上述處理異常的時候沒有區分異常情況。也可以捕獲異常的name,進行不同的處理。
try: num('a', 'b') except ValueError: print('你的參數格式寫的不對!!!') except ZeroDivisionError: print('你的除數是0!!!') print('--------->end')
try: num(10, 0) except ValueError: print('你的參數格式寫的不對!!!') except ZeroDivisionError: print('你的除數是0!!!') print('--------->end')
except {errorName} as key
。會將報錯的信息賦值給key
注意:Python中的錯誤類型也是class,所有錯誤類型都繼承自BaseException。所以excpt使用時要注意,如果錯誤類型還有子類型,也會將子類型一網打盡。
try: num(10, 0) except ValueError as error_msg_value: print('你的參數格式寫的不對!!!', error_msg_value) except ZeroDivisionError as error_msg_zero: print('你的除數是0!!!', error_msg_zero) print('--------->end')
這種使用errorName捕獲異常的情況。如果異常沒有被捕獲到,會一直向上拋,最終被python解釋器不過。打印錯誤信息。
無論是否拋出異常,最后finally都會執行。
try: num('a', 'b') except ZeroDivisionError as error_msg_zero: print('你的除數是0!!!', error_msg_zero) finally: print('無論有沒有異常,finally都會執行') print('--------->end')
-------------
輸出:
你的除數是0!!! division by zero
無論有沒有異常,finally都會執行
--------->end
但是如果異常沒有except沒有捕獲到異常,異常最后由python解釋器拋出。那么finally執行完后,后續的代碼就不會執行了。
try: num('a', 'b') # except ValueError as error_msg_value: # print('你的參數格式寫的不對!!!', error_msg_value) except ZeroDivisionError as error_msg_zero: print('你的除數是0!!!', error_msg_zero) finally: print('無論有沒有異常,finally都會執行') print('--------->end')
當try中代碼沒有問題時,會執行else。但是try中不能有retrun。
try: num(10, 2) except ValueError as error_msg_value: print('你的參數格式寫的不對!!!', error_msg_value) except ZeroDivisionError as error_msg_zero: print('你的除數是0!!!', error_msg_zero) else: print('else') finally: print('無論有沒有異常,finally都會執行') print('--------->end')
---------------
輸出:
5.0
else
無論有沒有異常,finally都會執行
--------->end
格式
raise errorName('error message')
錯誤類型名可以自定義,但盡量使用Python內置錯誤類型。
def num(a, b): result = a / b print(result) if result < 10: raise ValueError('商小于10,不符合預期。') num(10, 2)
raise還可以將一個錯誤類型轉換為另一個錯誤類型
def ch_type(): try: result = 10 / 0 except ZeroDivisionError as err_msg: raise Exception(err_msg) ch_type()
原本錯誤類型ZeroDivisionError,改成了Exception。
關于“Python異常處理機制的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。