我正在学习一门Java编程课程,我们刚刚学习了Java中的异常处理。我在最后一次作业批改中看到了这段代码:
public int getWinner() throws IllegalArgumentException {
int winner;
try {
winner = GameRules.getWinner(firstPlayer, secondPlayer);
} catch (IllegalArgumentException e) {
throw e;
}
return winner;
}
我的问题是:为什么我们首先捕获异常e,然后再次抛出它?我认为如果你这样做了,那么程序仍然会停止,所以它就像不处理异常一样。也许我错了,请指正,谢谢!
发布于 2020-10-30 20:36:23
有时,当您想要执行一些日志记录/记录一些指标作为流程的一部分时,您会捕获到一个异常。重新抛出异常意味着您可以将异常传递到调用堆栈的更高位置,这样它就可以由(集中式)错误处理程序处理。
并不是所有的异常都是不可恢复的,因为它们发生了,所以抛出异常并不一定会导致应用程序停止,除非它被允许在调用堆栈中向上冒泡。
捕获异常只是让您有机会在异常发生时决定下一步要做什么。捕获异常然后忽略它通常是不好的做法。
https://stackoverflow.com/questions/64615301
复制相似问题