我已閱讀再親的和訪問中拋出異常的反對的一些答案,但我想我會戳破我的具體問題用一個例子:糟糕的設計決定從存取器中拋出異常?
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中)。 –
不允許知道未被調用的設置的非法狀態。 –