Java异常体系——(核心基础)


这道题主要考察的是我们对于 异常错误的理解:

作为Java的异常体系来说最顶层的抽象是一个叫Throwable的接口。
它代表了任何可以被抛出的异常,或者是错误。

如图所示:

下图的ErrorException都代表的是系统的错误,但又有着根本的不同
在这里插入图片描述

Exception Error
可以是可被控制或不可控制的 总是不可控制的
表示一个由程序员导致的错误 经常用来用于表示系统错误或底层资源的错误
应该在应用程序级被处理 如果可能的话,应该在系统级被捕捉

Error:

Java中的定义不可控制,无法预期的错误出现
比如说在系统中出现了内存溢出,系统崩溃,虚拟机错误,方法调用栈溢出等等。
这里的错误通常都会导致程序的中断,同时仅仅靠程序本身它是无法恢复和预防的。
也就是说Error这个级别,是在我们应用程序之上,通常是操作系统级别的,所以对于Error来说,通常的做法就是中断程序的运行。


Exception:

异常
所谓异常通常是指可以被我们捕捉到的这部分错误。 例如:除法中出现了分母为0,我们就可以用try/catch进行捕捉和处理。
同时对于异常来说,它通常都是可以被恢复的(也就是说对于程序是可控的)如果出现了异常我们可以对它进行补救。
这便是异常和错误之间的区别


Exception和RuntimeException:

针对于刚才的Java异常体系来说,Exception和Error都实现了Throwable接口,
但是对于异常之后还有很多的类对它进行继承其中最典型的叫做RuntimeException

ExceptionRuntimeException之间的关系是:
对于Exception来说,我所有的类必须要进行强制处理,比如说try/catch或者说Throw抛出去。
而RuntimeException则代表了我们应用程序运行过程中所产生的异常,对于我们进行程序编码时,RuntimeException及它的其子类并不需要显示的通过try/catch强制处理。

Exception和RuntimeException区别:

也就是说这两者他们最大的区别在于Exception是所有异常的统称,而RuntimeException他则代表了只有在运行时产生的异常,
对于运行时产生的异常我们在程序编码的阶段是不要求对其进行强制try/catch处理或者throw抛出的这便是两者最大的区别。


猜你喜欢

转载自blog.csdn.net/Turniper/article/details/111645037