StandardError 和 LookupError

賴勇浩(http://laiyonghao.com)

今晚沒事,就讀了一下 python manuals,找到了幾個之前沒疏忽的知識點,其中就有 StandardError 和 LookupError。

StandardError

StandardError 繼承自 Exception,它是除了 StopIteration、GeneratorExit、KeyboardInterrupt 和 SystemExit 之外的所有內置異常類的父類。之前我常用 except Exception 來捕獲我想廣泛關注的異常,現在想來,其實是不對的。雖然我用 except Exception 這樣的代碼很少,但這很少的情境裏,大部分應該用 except StandardError。

LookupError

我不知道大家有沒有寫過這樣的代碼。。

try: i = t[1] except IndexError: i = default

某年某月某日,t 的類型從 list 之類的序列容器改成了 dict,太操蛋了,要把所有的 IndexError 都改爲 KeyError。我做過幾次這種事,當時把龜叔暗罵了若干次……好吧,現在我知道這是我的錯了。LookupError 是 IndexError 和 KeyError 的基類,也就是說如果上面的代碼是 except LookupError 的話,t 的類型變了也不用改代碼。哇嘸~

嗯,今晚看手冊,除了這個收穫以後,還有一些其它的知識點,不過現在太晚了,我改天再說吧。

嗯,真是溫故知新啊,手冊要多讀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章