在python中,每當我們寫用戶定義的異常時,我們必須從類Exception
擴展它。 我的問題是爲什麼我們不能將它從BaseException
擴展爲異常層次的超類,而Exception
也是BaseException
的子類。爲什麼我們應該使用Exception作爲超類,爲什麼不使用BaseException
4
A
回答
7
BaseException
包括諸如KeyboardInterrupt
和SystemExit
之類的東西,它們使用異常機制,但大多數人不應該捕捉。這與Java中的Throwable
類似,如果你對此熟悉的話。從BaseException
直接派生的東西通常用於在執行finally
塊和上下文管理器__exit__
方法釋放資源時關閉系統。
3
%的Python2 documentation有四種例外情況是BaseException
衍生物:
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
三個不在Exception
實際上並沒有錯誤,這意味着一般你不想趕上他們彷彿他們是錯誤的。在Python2.5中添加了BaseException
(在此之前,沒有BaseException
,其他例外從Exception
分類)。
相關問題
- 1. 爲什麼我們不應該放棄BaseException類?
- 2. 爲什麼建議從Python派生Exception而不是BaseException類?
- 3. 爲什麼我不應該使用Unity?
- 4. 爲什麼我不應該使用atoi()?
- 5. 何時以及爲什麼我們應該使用類System.ComponentModel.Container?
- 6. 爲什麼我們使用內部類?
- 7. 爲什麼我們使用WebMvcAutoConfigurationAdapter類
- 8. 什麼是Autoconf?爲什麼人們使用它?我應該使用它嗎?
- 9. 爲什麼或者爲什麼不應該使用Java 7?
- 10. 爲什麼我應該使用@properties?
- 11. 我應該爲git user.name使用什麼?
- 12. 我應該使用什麼鍵爲HashMap?
- 13. (爲什麼)我應該使用混淆?
- 14. 爲什麼我應該使用org.gradle.api.tasks.Exec?
- 15. 爲什麼我們應該將「Logger」類作爲單例考慮?
- 16. 爲什麼不推薦使用assert_template,而應該使用什麼?
- 17. 爲什麼我們不應該在角度上使用jquery?
- 18. 爲什麼我們不應該使用(默認)src包?
- 19. 爲什麼我們不應該同時使用jspViewResolver和TilesViewResolver?
- 20. 爲什麼我們不應該在Java中使用
- 21. php,爲什麼我們不應該使用get('var');
- 22. 爲什麼擴展Exception類?
- 23. 爲什麼我應該使用主ID作爲關聯表
- 24. 爲什麼我們不能使用double作爲泛型T?
- 25. 爲什麼我們不能使用ROWID作爲主鍵?
- 26. Java,爲什麼我們不能使用null作爲包名?
- 27. 爲什麼我們不能使用C字符串作爲SEL?
- 28. 爲什麼和什麼時候應該使用android日誌類?
- 29. 爲什麼我們應該在HTML中使用字符實體作爲符號?
- 30. 爲什麼我應該使用var而不是類型?
當然可以。你是否應該*是一個不同的問題。 Python只是想讓你在腳下拍攝自己有點困難,但如果你堅持,沒有人會保持你:) –