我總是使用catch(Exception e){// whatever}但實際上是正確的嗎?爲什麼我應該使用特定的異常,如果一般異常適用於一切?它以某種方式影響性能?Java何時捕獲一般異常和特定異常
0
A
回答
4
我總是使用catch(Exception e){// whatever},但實際上是正確的嗎?
不,這是違反良好的建議,以抓住最合適的特定例外。
爲什麼我應該使用特定的異常如果一般異常適用於一切?
因爲您並不真正期待的異常可以被掩蓋。 例如,執行某些數據庫操作時,可能會發生 和SQLException
,這可能是 ,您可以實現它的優雅處理。 如果ArrayIndexOutOfBoundsException
被拋出, 這將是意想不到的,並且最有可能表示編程錯誤。 但是,如果您改爲SQLException
,您會發現Exception
, ,那麼您可能永遠不會知道意外的ArrayIndexOutOfBoundsException
被拋出。 優雅的清理可能也不適用於這種例外。
使用特定的異常還可以使代碼更具可讀性: 讀者可以理解try-catch
守護的代碼中可能出現哪些錯誤。
與此相關的是,當你聲明一個拋出異常的方法時,聲明應該使用最適合抽象的異常。
它會以某種方式影響性能嗎?
根本不是。
相關問題
- 1. 捕獲一般異常 - powershell
- 2. 德爾福一般異常捕獲
- 3. 捕捉一般異常時,如何確定原始異常類型?
- 4. 同時捕獲java異常FileNotFound和IOException
- 5. 捕獲異常和
- 6. Tomcat異常類型忽略更一般的特定異常
- 7. 如何在異常中捕獲異常?
- 8. 捕捉特定的異常
- 9. 在Java中捕獲異常
- 10. Java異常未被捕獲?
- 11. Java IO異常捕獲
- 12. Java異常未被捕獲
- 13. 的Java IO捕獲異常
- 14. 在Java中捕獲異常
- 15. Java異常未捕獲
- 16. Java異常未捕獲?
- 17. java - 異常未被捕獲
- 18. 捕獲異常
- 19. 捕獲異常
- 20. 捕獲異常
- 21. 異常捕獲
- 22. 在OLEDBException下捕獲特定異常-2147467259
- 23. 捕獲PHP異常的特定實例
- 24. Python:捕獲特定的異常
- 25. 通過從特定捕獲到特定捕獲的異常
- 26. 僅捕獲超時異常
- 27. 如何在同時捕獲異常時斷言異常?
- 28. java捕捉異常
- 29. 如何管理特定和一般的異常
- 30. 捕獲異步lambda異常
沒有性能差異,但在特定例外的情況下,您可以專門處理它們以從錯誤中恢復。如果你只是捕捉'Exception',那麼你可以做的最好的事情就是打印它的堆棧跟蹤。但是,例如,如果您正在構建ATM/Banking應用程序,則可以捕獲「InsufficientFundsException」,並以與「InvalidPinException」不同的方式對待它。 –
感謝您的提示:) – Welite