Min*_*ang 10 java exception-handling exception
关于在Java中重新抛出异常,我有一个非常简单的问题.
这是代码片段:
public static void main(String[] args) throws FileNotFoundException {
try {
FileReader reader = new FileReader("java.pdf");
} catch (FileNotFoundException ex) {
throw ex;
}
}
public static void main(String[] args) throws FileNotFoundException {
FileReader reader = new FileReader("java.pdf");
}
Run Code Online (Sandbox Code Playgroud)
为什么我们需要重新抛出ex第一个版本,而第二个版本看起来更优雅?什么可能是好处,哪个版本比另一个更受欢迎?
Ale*_*exR 15
你是对的.第二个版本更好.而且第一个版本没有任何意义.除了异常的堆栈跟踪将是"错误的"之外,它也是如此.
"重新抛出"异常有以下原因:
例:
try {
// do something
} catch (IOException ioe) {
throw new IllegalStateException(ioe);
}
Run Code Online (Sandbox Code Playgroud)
在给出的例子中,重新投掷Exception服务没有任何意义.
如果捕获然后重新抛出异常的方法需要在看到它时采取一些额外的操作,并且还希望将它传播给调用者,那么这样做可能很有用,这样调用者就可以看到并执行某些操作.ExceptionExceptionException