这两者有什么区别?投掷和投掷之间有什么区别异常
回答
例外的是在程序中的逻辑错误。 JVM使用错误来指示环境出现问题,如OutOfMemoryError或IncompatibleClassChangeError。 ThreadDeath用于杀死线程。 Throwable在所有这些方面都是超级类。
在正常的程序逻辑中,你永远不应该抛出或捕获Throwables或Errors。我能想到捕捉错误的主要原因是这样的:您正在使用自己的类加载系统,并希望隔离损坏的插件。
例如用于的ThreadDeath的JavaDoc的说:
应用程序应抓住这一类的实例只有当它必须被异步终止后清理。如果ThreadDeath被一个方法捕获,重新抛出它是非常重要的,以便线程真正死亡。
的的Throwable类是Java语言中所有错误和异常的超类。只有作为此类(或其某个子类)的实例的对象由Java虚拟机抛出,或者可以由Java throw语句抛出。同样,只有这个类或它的一个子类可以是catch子句中的参数类型。
两个子类的错误和异常的实例通常用于指示发生异常情况。通常情况下,这些实例是在异常情况下新创建的,以包含相关信息(如堆栈跟踪数据)。
的Exception类及其子类是Throwable的一种形式,它指出的条件合理的应用程序想要捕获的。
请阅读文档,它解释。
这是层次结构
java.lang.Object
java.lang.Throwable
java.lang.Exception
Throwable可能是错误或异常。
从Java文档:
的Error
是Throwable的子类,表示严重的问题,一个合理的应用程序不应该试图捕获。大多数此类错误都是异常情况。
Exception
及其子类是Throwable的一种形式,表示合理应用可能需要捕获的条件。
Throwable类是由Exception类和Error类扩展的,所以通过使用throws Throwable你实际上是说你的方法不仅可以抛出异常,还可以抛出一个错误。根据文档两者之间的区别是,例外的是
条件合理的应用程序想要捕获的
而错误表示
严重的问题,一个合理的应用程序应该不要试图捕捉
请参阅here了解更多d etails。
如果Throwable
只能是一个Error
或Exception
,将有一个方法throws Throwable
和throws Exception
之间没有区别,因为Error
可以随时抛出,即使未声明(如RuntimeException
,太)。
但随着throws Throwable
声明的方法还可以使用throw new Throwable("example");
,或者是这样的:
class CannonBall extends Throwable {}
throw new CannonBall();
通常没有理由做这样的事情,所以在实践中throws Throwable
和throws Exception
是等同。
- 1. 投掷Java异常
- 2. 投掷状态异常
- 3. 投掷异常问题
- 4. 按任务投掷异常
- 5. py2Neo投掷py2neo.rest.NoResponse异常
- 6. 列表投掷UnsupportedOperationException异常
- 7. Netbeans的投掷NumberFormatException异常
- 8. PhpMailer投掷致命异常
- 9. 投掷和捕捉异常#2
- 10. 为什么是掺合和Visual Studio 12投掷和异常?
- 11. 投掷回报与马克西姆破发之间的区别
- 12. 来自ANTLR4访客的投掷异常
- 13. C++跨线程异常投掷
- 14. setVideoSource投掷的RuntimeException(状态:IllegalStateException异常)
- 15. adView投掷空指针异常
- 16. VSTO Excel加载项投掷异常
- 17. 撒克逊投掷java.net.SocketException异常:
- 18. 投掷泛型异常不鼓励?
- 19. 在android中投掷异常问题
- 20. Div标记投掷空引用异常
- 21. 投掷HTTP异常从的Application_Error
- 22. WCF单例投掷超时异常
- 23. ParcelFileDescriptor投掷文件未发现异常
- 24. 异常投掷最佳实践
- 25. 休眠方法投掷“java.lang.IllegalArgumentException异常”
- 26. Debug.Assert与特定投掷异常
- 27. 从Mockito模拟投掷异常
- 28. Jetty.util.MultiMap投掷ConcurrentModificationException
- 29. laravel投掷MethodNotAllowedHttpException
- 30. 投掷后AOP