Java 捕获异常和重新刷新
我是Java领域的新手,但目前正在进行指定的评估。我想知道是否有一种方法可以捕获类函数内部的异常并抛出另一个异常,这样调用类函数的函数就不需要知道抛出的第一个异常 比如说Java 捕获异常和重新刷新,java,exception,throw,Java,Exception,Throw,我是Java领域的新手,但目前正在进行指定的评估。我想知道是否有一种方法可以捕获类函数内部的异常并抛出另一个异常,这样调用类函数的函数就不需要知道抛出的第一个异常 比如说 public void foo() throws MasterException { try { int a = bar(); } catch (MasterException e) { //do stuff } } public void bar() throws M
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
。您要更改此行:
public void bar() throws MasterException, MinorException
为此:
public void bar() throws MasterException
其他一切都应该按照您编写的方式进行。只要从bar()的throws子句中删除MinorException。从
bar的声明中删除,MinorException
,您就完成了。
我还想:
throw new MasterException(e);
如果MasterException
有一个支持它的构造函数(它的标准构造函数是Exception
类do)。我会在捕获它时从foo()中删除MasterException,正如其他答案所说,从bar()中删除MinorException
此外,如果MasterException或MinorexException是RuntimeException的子类,则不需要声明它。见例
从方法foo()
的声明中删除抛出MasterException
,原因很明显,MasterException已被捕获,因此无论如何都不会发生
从方法bar()
的声明中删除,MinorException
除了在bar()
上保持throws MinorException
之外,这看起来你已经完全完成了你的要求。没有必要在bars
throws`子句中列出MinorException。谢谢伙计,我来自c/c++背景,从未真正使用过异常。异常是福也是祸,当他们被检查时,他们大多是一个诅咒。抓住这个重新投掷的概念就像是“掌握”它们的好步骤。我总是认为他们是C++中的诅咒。@你能解释一下为什么抓和再投是一件好事吗?我希望我没有劫持原来的问题。如果是,apologies@Kaushik请忽略/忘记这一点。英语是我的第二语言,我试着说一些与你读到的完全不同的东西。我只是在脑海中编造了一个例外的名字,我没有使用这些例外,只是一个例子。