3

我是 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.

4

5 回答 5

3

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

throw new MasterException(e);

如果MasterException有一个支持它的构造函数(它的标准是它,Exception类是)。

于 2012-05-04T00:25:42.913 回答
1

绝对地。你想改变这一行:

public void bar() throws MasterException, MinorException

对此:

public void bar() throws MasterException

其他一切都应该完全按照您的编写方式工作。

于 2012-05-04T00:24:21.807 回答
1

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

于 2012-05-04T00:25:27.213 回答
0

当您捕获它时,我会从 foo() 中删除 MasterException,正如其他答案所说,来自 bar() 的 MinorException。

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

于 2012-05-04T00:28:51.333 回答
0
  1. throws MasterException 从 method 的声明中删除 foo(),原因很明显 MasterException 已经准备好被捕获,所以无论如何都不会发生。

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

于 2012-05-04T04:38:21.837 回答