我是否应该声明一个未经检查的异常



我有一个调用另一个方法的方法,如下所示:

public void m1() {
    m2(10);
}
public void m2(int v) {
    if(v < 10)
        throw new MyException();
}
public class MyException extends RuntimeException{ }

现在,我想通知将要使用m1()的客户,它可能会抛出MyException。如果我这样声明可以吗:

public void m1() throws MyException{
    m2(10);
}

我不确定,因为我曾经使用带有检查异常throws声明。未经检查的这样做很常见吗?

你可以这样做 - 我相信它会出现在Javadoc中。但它不会强迫任何调用者处理异常,所以你仍然基本上依赖于用户(调用你的代码的开发人员)足够勤奋地检查文档。如果这对您来说足够了,那就去做吧 - 否则,MyException更改为已检查的异常。

至于声明可能引发的未经检查的异常是否常见 - 我会说我已经经常看到它,以至于它并不特别令人惊讶,但这不是一种广泛使用的做法。

您可以在 throws 子句中声明未经检查的异常,但正如您所指出的,除了表示该方法可能会引发它之外,它不会有任何实际影响。这样做绝对并不少见,JDK 似乎已经采用了这种方法(例如,请参阅Integer#parseInt)。

不管你是否在throws子句中声明它,你都应该在方法的javadoc中记录它,这是使用你的方法的人可能会看到的第一个地方。

相关内容

  • 没有找到相关文章

最新更新