捕捉异常和反思

时间:2012-05-04 00:17:41

标签: java exception throw

我是Java场景的新手,但目前正在进行指定的评估。我想知道是否有办法在类函数中捕获异常并抛出另一个异常,因此调用类函数的函数不需要知道抛出的第一个异常。

例如

public void foo() throws MasterException {
    try {
        int a = bar();
    } catch (MasterException e) {
        //do stuff
    }
}

public void bar() throws MasterException, MinorException {
    try {
        int a = 1;
    } catch (MinorException e) {
        throw new MasterException();
    }
}

我希望这个例子可以解释我想要实现的目标。基本上我希望调用函数不要知道MinorException

5 个答案:

答案 0 :(得分:3)

, MinorException的声明中删除bar,您就完成了。 我也会这样做:

throw new MasterException(e);

如果MasterException有一个支持它的构造函数(它的标准是它,那么Exception类就可以了。)

答案 1 :(得分:1)

绝对。你想改变这一行:

public void bar() throws MasterException, MinorException

到此:

public void bar() throws MasterException

其他所有内容都应该与您编写的内容完全一致。

答案 2 :(得分:1)

只需从bar()的throws子句中删除MinorException。

答案 3 :(得分:0)

我会从foo()中删除MasterException,因为你正在捕获它,而其他答案说,来自bar()的MinorException。

此外,如果MasterException或MinorException是RuntimeException的子类,则无需声明它。参见例如http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html

答案 4 :(得分:0)

  1. 从方法throws MasterException的声明中删除foo(),原因很清楚,MasterException已经准备就绪,无论如何都不会发生。

  2. 从方法, MinorException的声明中删除bar()