首页 > 编程 > Java > 正文

java中throwable的再学习

2019-11-06 06:03:30
字体:
来源:转载
供稿:网友

先引进一个题:

以下能用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.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表