淺談python拋出異常、自定義異常, 傳遞異常
一. 拋出異常
Python用異常對象(exception object)表示異常情況,遇到錯誤后,會引發(fā)異常。如果異常對象并未被處理或捕捉,程序就會用所謂的回溯(Traceback,一種錯誤信息)終止執(zhí)行。
raise 語句
Python中的raise 關(guān)鍵字用于引發(fā)一個異常,基本上和C#和Java中的throw關(guān)鍵字相同,如下所示:
import traceback def throw_error(): raise Exception("拋出一個異常")#異常被拋出,print函數(shù)無法執(zhí)行 print("飛天豬") throw_error()
#運行結(jié)果:
'''Traceback (most recent call last): File "C:\Users\Administrator\Desktop\systray.py", line 7, in <module> throw_error() File "C:\Users\Administrator\Desktop\systray.py", line 4, in throw_error raise Exception("拋出一個異常")#異常被拋出,print函數(shù)無法執(zhí)行 Exception: 拋出一個異常'''
raise關(guān)鍵字后面是拋出是一個通用的異常類型(Exception),一般來說拋出的異常越詳細越好
二.傳遞異常:
捕捉到了異常,但是又想重新引發(fā)它(傳遞異常),可以使用不帶參數(shù)的raise語句即可:
class MufCalc(object): m = False def calc(self,exp): try: return eval(exp) except ZeroDivisionError: if self.m: print("cool") else: raise app = MufCalc() app.calc(2/0)
三.自定義異常類型:
Python中也可以自定義自己的特殊類型的異常,只需要要從Exception類繼承(直接或間接)即可:
class MyError(Exception): pass
相關(guān)文章
python?魔法方法之?__?slots?__的實現(xiàn)
本文主要介紹了python?魔法方法之?__?slots?__的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03python markdown轉(zhuǎn)html自定義實現(xiàn)工具解析
Python-Markdown2 是一個 Python 庫,用于將 Markdown 文本轉(zhuǎn)換為 HTML,它是對標準 Markdown 語法的擴展,提供了一些額外的功能和選項,同時還兼容標準 Markdown,用它可以方便地生成漂亮的文檔、博客文章、項目文檔等2024-01-01關(guān)于adfuller函數(shù)返回值的參數(shù)說明與記錄
這篇文章主要介紹了關(guān)于adfuller函數(shù)返回值的參數(shù)說明與記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11opencv深入淺出了解機器學(xué)習(xí)和深度學(xué)習(xí)
機器學(xué)習(xí)是人工智能的核心,專門研究如何讓計算機模擬和學(xué)習(xí)人類的行為。?深度學(xué)習(xí)是機器學(xué)習(xí)中的一個熱門研究方向,它主要研究樣本數(shù)據(jù)的內(nèi)在規(guī)律和表示層次,讓計算機能夠讓人一樣具有分析與學(xué)習(xí)能力2022-03-03利用Python中的mock庫對Python代碼進行模擬測試
這篇文章主要介紹了利用Python中的mock庫對Python代碼進行模擬測試,mock庫自從Python3.3依賴成為了Python的內(nèi)置庫,本文也等于介紹了該庫的用法,需要的朋友可以參考下2015-04-04pandas.DataFrame中提取特定類型dtype的列
本文主要介紹了pandas.DataFrame中提取特定類型dtype的列,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02