我有方法x
,它调用其中的另一个名为y
的方法,该方法抛出异常MyException
。此时我有 2 个选择,要么宣传我的方法 x
,但异常 MyException
... 就像
public void x() throws MyException {
// call to y
}
(因为 y
是通过这样的 throws
子句进行广告的...)
public void y() throws MyException {
// code
}
或者将我的方法 x
中对 y
的调用包装在 try catch block 中并处理它?像这样..
public void x() {
try {
// call to y
} catch (MyException e) {
// handle exception
}
}
经验法则是什么?
最佳答案
如果您的方法可以与其调用者保持契约,无论异常如何,那么该异常就是它可以而且可能应该处理的东西。
如果调用者会困惑地发现他们说“do x”,并且执行“x”的“y”部分存在内部问题,因为“x”并没有真正完成,那么你应该公开异常(或以 MyException
作为原因的其他异常)。
并且 - 考虑调用者是否可以合理地处理异常,或者程序是否有任何理由继续运行,如果答案是否定的,请考虑使用 RuntimeException
或 分别为错误
。
无论如何,这就是我想说的。
关于java - 何时应公布异常情况以及何时应进行处理的经验规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10612203/