首先,我们看jdk对Throwable类的介绍:java.lang.Throwable类是java中的所有错误和异常的超类,只有这个类或者这个类的子类才能够被jvm或者java的throw或throws子句所抛出,同时也只有该类或者他的一个子类才能作为catch子句的参数。
也就是说能够被throw(在方法中使用)和throws(在方法定义时使用)子句抛出以及被catch子句接住的玩意都是Throwable类或者其子类。
按照Throwable的分支,我们可以将java程序会出现的一些消极的问题分为错误和异常,分别是Error类和Exception类,具体的一些错误和异常都是这两个类的子类,其中Error表示系统级别的一些错误,通常来说是jvm发生了错误,当然这些错误可能是由应用程序本身的一些问题所引起的,典型常见的Error就是OutOfMemoryError, StackOverflowError,是JVM的错误,但是却是由于应用本身不够严谨的编码引起。而Exception表示应用程序本身的一些异常,是由于程序编写过程中,由于逻辑不严密等等程序员自身问题所造成的异常。
而Exception又可以分成两条线,分别是编译期异常和运行期异常,运行期异常就是RuntimeException以及其子类,而编译期异常则是Exception类以及其子类中的非RuntimeException及其子类。编译期异常和运行期异常之间的直接区别就是,编译期异常通常都是一些可以预见的异常,是编译期间能够检测的异常,比如ClassNotFoundException,编译器要求程序员必须对这种异常发生的情况进行处理。所以在程序编译期间,会强制程序员对编译期异常进行处理(catch或者throw),而对于运行期异常(典型的就是NullPointerException),因为这种异常在编译期无法检测,所以在编译期间不会强制对这种异常进行处理,而这种异常会在程序运行期间抛出,一旦jvm抛出了这种异常,会引起程序的异常中断。
而Error与RuntimeException类似,是运行期错误,是无法检测的,一旦发生会引起程序异常中断。
对于Error与RuntimeException可以通过catch子句进行捕获。
转载:https://blog.csdn.net/qq_36371953/article/details/81103003
继续阅读与本文标签相同的文章
Android-菜单关联activity
直播技术专家蔡鼎:云导播的技术实现和玩法
-
在闲鱼实习做Flutter是什么感受?
2026-05-18栏目: 教程
-
阿里云智能--基础产品技术月刊 2019年8月
2026-05-18栏目: 教程
-
《Android进阶解密》| 每日读本书
2026-05-18栏目: 教程
-
watchbog再升级,企业黄金修补期不断缩小,或面临蠕虫和恶意攻击
2026-05-18栏目: 教程
-
阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性| 9月9号栖夜读
2026-05-18栏目: 教程
