我有一个方法可以调用另一种方法:
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
声明和已检查的例外。与未经检查的人一起这样做是否常见?
答案 0 :(得分:7)
你可以这样做 - 我相信它会出现在Javadoc中。但是它不会强迫任何调用者处理异常,所以你仍然基本上依赖于用户(开发人员调用你的代码)来努力检查文档。如果这对您来说足够了,那就去吧 - 否则,将MyException
更改为已检查的例外。
至于它是否普通来声明可能被抛出的未经检查的异常 - 我会说我经常看到它并不足以让它不特别令人惊讶,但它& #39;不是一种广泛使用的做法。
答案 1 :(得分:3)
您可以在throws
子句中声明一个未经检查的异常,但是,正如您所指出的,除了表示该方法可能会抛出它之外,它不会产生任何实际影响。这样做绝对不常见,JDK似乎采用了这种方法(例如,参见Integer#parseInt
)。
无论你是否在throws
子句中声明它,你都应该在方法的javadoc中记录它,这是使用你的方法的人可能会看到的第一个地方。