我总是使用catch(Exception e){// whatever}但实际上是正确的吗?为什么我应该使用特定的异常,如果一般异常适用于一切?它以某种方式影响性能?Java何时捕获一般异常和特定异常
0
A
回答
4
我总是使用catch(Exception e){// whatever},但实际上是正确的吗?
不,这是违反良好的建议,以抓住最合适的特定例外。
为什么我应该使用特定的异常如果一般异常适用于一切?
因为您并不真正期待的异常可以被掩盖。 例如,执行某些数据库操作时,可能会发生 和SQLException
,这可能是 ,您可以实现它的优雅处理。 如果ArrayIndexOutOfBoundsException
被抛出, 这将是意想不到的,并且最有可能表示编程错误。 但是,如果您改为SQLException
,您会发现Exception
, ,那么您可能永远不会知道意外的ArrayIndexOutOfBoundsException
被抛出。 优雅的清理可能也不适用于这种例外。
使用特定的异常还可以使代码更具可读性: 读者可以理解try-catch
守护的代码中可能出现哪些错误。
与此相关的是,当你声明一个抛出异常的方法时,声明应该使用最适合抽象的异常。
它会以某种方式影响性能吗?
根本不是。
相关问题
- 1. 捕捉一般异常时,如何确定原始异常类型?
- 2. Tomcat异常类型忽略更一般的特定异常
- 3. 如何在异常中捕获异常?
- 4. 捕捉特定的异常
- 5. 在Java中捕获异常
- 6. java - 异常未被捕获
- 7. Java异常未被捕获?
- 8. Java异常未捕获
- 9. 的Java IO捕获异常
- 10. 捕获异常
- 11. 异常捕获
- 12. 捕获异常
- 13. 捕获异常
- 14. 捕获PHP异常的特定实例
- 15. 通过从特定捕获到特定捕获的异常
- 16. 仅捕获超时异常
- 17. 捕获异步lambda异常
- 18. 如何管理特定和一般的异常
- 19. 捕获SQLAlchemy异常
- 20. 捕获iframe异常
- 21. jvm异常捕获
- 22. JNA捕获异常
- 23. JUnit异常捕获
- 24. 捕获空异常
- 25. 如何使用Application_UnhandledException来捕获一般异常?
- 26. Django的捕获异常和重定向
- 27. 如何在发送邮件时捕获特定的异常?
- 28. 如何捕获substr异常?
- 29. 如何捕获此异常
- 30. 如何捕获UrlFetchApp.fetch异常
没有性能差异,但在特定例外的情况下,您可以专门处理它们以从错误中恢复。如果你只是捕捉'Exception',那么你可以做的最好的事情就是打印它的堆栈跟踪。但是,例如,如果您正在构建ATM/Banking应用程序,则可以捕获“InsufficientFundsException”,并以与“InvalidPinException”不同的方式对待它。 –
感谢您的提示:) – Welite