无参数构造函数抛出一个不可能的异常或有一个空的 catch 块更好吗?假设我有这样的课程。
public class Foo {
private int num;
private String numString;
public Foo() throws NumberFormatException {
setNum("1");
}
public void setNum(String s) throws NumberFormatException {
// In reality, complex code goes here
num = Integer.parseInt(s);
numString = s;
}
}
编译器强制构造函数要么抛出 NumberFormatException (这永远不会发生),要么有一个 try/catch 块。但是,有一个空的 catch 块是否正确,这通常是不受欢迎的?
public Foo() {
try {
setNum("1");
}
catch (NumberFormatException e) { }
}
请注意, Foo 将是一个库类,其他人会使用它,所以让一个无参数构造函数抛出一个不可能的异常会令人困惑。另请注意,真正的异常是自定义异常,而不是 NumberFormatException,这可能会使库用户更加困惑,他们可能会觉得他们必须在不需要时阅读自定义异常。