我是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
。
答案 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)
从方法throws MasterException
的声明中删除foo()
,原因很清楚,MasterException已经准备就绪,无论如何都不会发生。
从方法, MinorException
的声明中删除bar()
。