【发布时间】:2012-05-05 04:25:26
【问题描述】:
无参数构造函数是抛出一个不可能的异常还是有一个空的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,这可能会使库用户更加困惑,他们可能会觉得他们必须在不需要时阅读自定义异常。
【问题讨论】:
标签: java exception constructor