2013-07-26 51 views

回答

3

讓我們來看看Exception hierarchy

來自BaseException的唯一例外是SystemExit,KeyboardInterruptGeneratorExit。他們是例外,不應該被意外發現。這就是他們與衆不同的原因。從KeyboardInterrupt

引用:

例外從BaseException繼承,以便不通過,捕捉異常並因此防止解釋從離開代碼被意外捕獲。

這也是爲什麼你不應該使用try: ... except: ...而沒有指定異常類型。

+1

感謝您回覆我的問題。我發現了一些答案,在BaseException中有一個finally塊,它有__exit __()方法導致退出應用程序。這就是我們不應該擴展BaseException而不是Exception類的原因... – nanithehaddock

+2

這沒有任何意義。 Exception擴展了BaseException,所以Exception有'__exit __()'。實際上,任何未捕獲的異常都會退出應用程序。你能把我的一個鏈接放到一個鏈接上嗎? – gioi

+0

'__exit __()'是一個上下文管理器鉤子,不會退出應用程序。 'sys.exit()'退出應用程序。 –

相關問題