Python中自定義異常的操作和意義

通過創(chuàng)建一個(gè)新的異常類卸奉,程序可以命名他們自己的異常睬塌。異常應(yīng)該是典型的繼承自Exception類,通過直接或間接的方式昆庇。

一下為與RuntimeErrot相關(guān)的實(shí)例赤惊,實(shí)例中創(chuàng)建了一個(gè)類,基類為RuntimeError.用于在異常出發(fā)時(shí)輸出更多的信息凰锡。
在try語句塊中未舟,用戶自定義的異常后執(zhí)行except塊語句,變量 e 是用于創(chuàng)建Networkerror類的實(shí)例掂为。

class Networkerror(RuntimeError):
  def __init__(self, arg):
   self.args = arg

在你定義以上類后裕膀,你可以觸發(fā)該異常,如下所示:

try:
  raise Networkerror("Bad hostname")
except Networkerror,e:
  print e.args

在下面這個(gè)例子中勇哗,默認(rèn)的init()異常已被我們重寫昼扛。

>>> class MyError(Exception):
...   def __init__(self, value):
...     self.value = value
...   def __str__(self):
...     return repr(self.value)
...
>>> try:
...   raise MyError(2*2)
... except MyError as e:
...   print 'My exception occurred, value:', e.value
...
My exception occurred, value: 4
>>> raise MyError, 'oops!'
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
__main__.MyError: 'oops!'

常見的做法是創(chuàng)建一個(gè)由該模塊定義的異常基類和子類欲诺,創(chuàng)建特定的異常類不同的錯(cuò)誤條件抄谐。

我們通常定義的異常類,會(huì)讓它比較簡(jiǎn)單扰法,允許提取異常處理程序的錯(cuò)誤信息蛹含,當(dāng)創(chuàng)建一個(gè)異常模塊的時(shí)候,常見的做法是創(chuàng)建一個(gè)由該模塊定義的異橙洌基類和子類浦箱,根據(jù)不同的錯(cuò)誤條件吸耿,創(chuàng)建特定的異常類:

class Error(Exception):
  """Base class for exceptions in this module."""
  pass
 
class InputError(Error):
  """Exception raised for errors in the input.
 
  Attributes:
    expression -- input expression in which the error occurred
    message -- explanation of the error
  """
 
  def __init__(self, expression, message):
    self.expression = expression
    self.message = message
 
class TransitionError(Error):
  """Raised when an operation attempts a state transition that's not
  allowed.
 
  Attributes:
    previous -- state at beginning of transition
    next -- attempted new state
    message -- explanation of why the specific transition is not allowed
  """
 
  def __init__(self, previous, next, message):
    self.previous = previous
    self.next = next
    self.message = message
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市酷窥,隨后出現(xiàn)的幾起案子咽安,更是在濱河造成了極大的恐慌,老刑警劉巖蓬推,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妆棒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沸伏,警方通過查閱死者的電腦和手機(jī)糕珊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馋评,“玉大人放接,你說我怎么就攤上這事×籼兀” “怎么了纠脾?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蜕青。 經(jīng)常有香客問我苟蹈,道長(zhǎng),這世上最難降的妖魔是什么右核? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任慧脱,我火速辦了婚禮,結(jié)果婚禮上贺喝,老公的妹妹穿的比我還像新娘菱鸥。我一直安慰自己,他們只是感情好躏鱼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布氮采。 她就那樣靜靜地躺著,像睡著了一般染苛。 火紅的嫁衣襯著肌膚如雪鹊漠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天茶行,我揣著相機(jī)與錄音躯概,去河邊找鬼。 笑死畔师,一個(gè)胖子當(dāng)著我的面吹牛娶靡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茉唉,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼固蛾,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼结执!你這毒婦竟也來了度陆?” 一聲冷哼從身側(cè)響起艾凯,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎懂傀,沒想到半個(gè)月后趾诗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹬蚁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年恃泪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犀斋。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贝乎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叽粹,到底是詐尸還是另有隱情览效,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布虫几,位于F島的核電站锤灿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辆脸。R本人自食惡果不足惜但校,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啡氢。 院中可真熱鬧状囱,春花似錦、人聲如沸倘是。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辨绊。三九已至奶栖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間门坷,已是汗流浹背宣鄙。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留默蚌,地道東北人冻晤。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像绸吸,于是被迫代替她去往敵國(guó)和親鼻弧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子设江,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,969評(píng)論 3 119
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法攘轩,類相關(guān)的語法叉存,內(nèi)部類的語法,繼承相關(guān)的語法度帮,異常的語法歼捏,線程的語...
    子非魚_t_閱讀 31,599評(píng)論 18 399
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,340評(píng)論 8 265
  • 沒有喧囂, 早班的公交車更像衣櫥笨篷。 四季收納不同瞳秽, 流行不同, 人也像極了掛衣架子率翅。 只是衣櫥有藏私练俐, 這里卻似君...
    SeanQD閱讀 238評(píng)論 0 0
  • 傳說中的XS飲料終于在9月4號(hào)問世了浴韭,不大的罐子分為桔子口味和蔓越莓口味2種包裝丘喻。 它是一款維生...
    春華秋實(shí)bj閱讀 337評(píng)論 0 0