我已阅读再亲的和访问中抛出异常的反对的一些答案,但我想我会戳破我的具体问题用一个例子:糟糕的设计决定从存取器中抛出异常?
public class App {
static class Test {
private List<String> strings;
public Test() {
}
public List<String> getStrings() throws Exception {
if (this.strings == null)
throw new Exception();
return strings;
}
public void setStrings(List<String> strings) {
this.strings = strings;
}
}
public static void main(String[] args) {
Test t = new Test();
List<String> s = null;
try {
s = t.getStrings();
} catch (Exception e) {
// TODO: do something more specific
}
}
}
getStrings()
被抛出Exception
时strings
一直没有组。这种情况能通过一种方法更好地处理吗?
这很好 - 但为什么它不好? – wulfgarpro
@wulfgar:因为你应该确保你的对象总是处于有效状态。如果你确保永远不允许某个对象处于无效状态,那么你可以始终获得它的属性,而不必担心可能会出现错误。加上你只需要检查一次(在setter中)。 –
不允许知道未被调用的设置的非法状态。 –