无参数构造函数抛出一个不可能的异常或有一个空的 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,这可能会使库用户更加困惑,他们可能会觉得他们必须在不需要时阅读自定义异常。