问答详情
源自:1-7 Java 中的异常链

有几个问题需要帮助。

1、怎样理解“包装成运行时异常”?原始异常是哪类就是哪类,为什么要包装成运行时异常呢?
2、catch(Exception e)为什么总是e?e是形参吗,那么它的实参在哪里?
3、catch子句里的RuntimeException newExc=new RuntimeException();此处的RuntimeException类是程序默认继承吗?还是默认导入?
4、newExc.initCause(e);此方法翻译成汉语叫什么?有什么功能?
谢谢~


提问者:_Jack_Han_ 2016-02-05 23:35

个回答

  • hainishishui
    2016-02-06 00:23:11
    已采纳

    第二个问题问的好!同求!

    对于以上四个问题我的理解是这样的:

    1、包装的异常类应该是Exception的子类,至于使用RuntimeException类应该是举个例子,使用现有的子类的方法比较方便。

    2、Exception e的实例化个人感觉应该是由虚拟机实现的

    3、RuntimeException类是Exception类的子类,都在java.lang包中,java编译器自动加载了java.lang包的内容

    4、这个可以查查api

  • choupichong
    2016-04-07 17:38:57

    2,

    e代表一个Exception对象
    此对象通过try..catch扑获
    楼主可以想象Exception e = new Exception();

  • 七九九
    2016-02-20 22:11:15

    2.e是形参,实参就是try中捕获到的异常,确切来讲,是test1()方法中抛出的某种异常类的对象,比如说,从throw new Exception()    就可以看出实际上是创建了一个Exception类的实例,然后再将实例抛出。因为Exception只是一个模板,但是我们会碰到各种各样的Exception类的异常,引起异常的原因不同,他们的内容描述也不同,这样可以理解为什么抛出的是类的对象。

    4.initCause应该是initial cause的缩写吧,大概就是“起因”的意思,initial 最初的,cause 原因。

    作用:将传入的对象设置为“原因”。如果这个对象已经被设置为“原因”,则抛出异常。

    如果把这一条语句删除,你会发现,test1()中的异常是不会被显示在控制台中。