java中throwable的再学习

来源:互联网 发布:淘宝怎么装饰店面 编辑:程序博客网 时间:2024/06/05 21:01

先引进一个题:

以下能用throwable抛出的异常有?

A: Throwable

B:Event

C:Object

D:Error

E:Exception

F:RuntimeException


答案为ADEF;

首先能被throw的异常,必须得要能thowable吧,先看throwable的主要声明:

public class Throwable implements Serializable {    /** use serialVersionUID from JDK 1.0.2 for interoperability */    private static final long serialVersionUID = -3042686055658047285L;}
好吧,throwable原来十个类,我一直以为有able的都是接口。。

他只实现了serializeble。

再来看他的主要的子类结构



只有三个类继承他:

一个Error:这种错误被设计成不被捕获,产生于jvm自身。不需要去throw或catch它以及他的子类。


一个Exception:这种是在程序中应该捕获的异常,其中它里面的runtimeexception又是一个特殊的子类。

这里面子类太多了,就不贴图了,有需要可以自己查看哈

还有一个StackRecorder:名字意思是“栈记录器”,貌似未直接在jdk里面开源,等以后碰到了再详细了解。。

再说runtimeexception:


也还是很多的,这里只截取一部分。。

这种异常的解释是:Java程序应该捕获,却可以不去捕获的一个异常。在大多数情况下,都不会去捕获他,一个重要原因是这种异常可能发生的情况太普遍,几乎每行代码都会有RuntimeException的风险,因此反而无需去捕获了。JDK文档中的原话是:“A method is not required to declare in its throws clause any subclasses of RuntimeException that might be thrown during the execution of the method but not caught.”在执行的时候可能会抛出。例如除0.

第三个就是stackrecorder,按名字是栈记录器的意思,貌似没有直接在jdk里面开源,等以后用到了再详细了解。。




0 0
原创粉丝点击