我的問題是下面,我已經相當長的吸氣劑,即的try-catch而不是空的檢查使用幾個吸氣劑當
objectA.getObjectB().getObjectC().getObjectD().getObjectE().getName();
由於「壞」數據庫/實體設計(有些東西介紹晚於其他)發生getObjectB()
,getObjectC()
或getObjectD()
可能會返回NULL
。
通常我們用空檢查所有的時間,但在這種情況下,我不得不使用
ObjectB b = objectA.getObjectB();
if (b != null) {
ObjectC c = b.getObjectC();
if (c != null) {
ObjectD d = c.getObjectD();
if (d != null)
return d.getObjectE().getName();
}
}
return "";
相反,它會更容易簡單地用一個try-catch塊
try {
return objectA.getObjectB().getObjectC().getObjectD().getObjectE().getName();
} catch (NullPointerException e) {
return "";
}
在這種情況下,我真的不在乎哪個對象返回NULL,它顯示一個名稱或不顯示。使用try-catch而不是檢查是否有任何複雜性或設計不好?
感謝您的輸入。
它通常是一個糟糕的設計,使用異常的完全正確的情況下,這是,如果吸氣返回'空'不是一個錯誤。 –
多個if/else會增加圈複雜度!這是肯定的! –
if(objectA.getObjectB()!= null && objectA.getObjectB()。getObjectC()!= null && ...)''?如果第一個錯誤,Java將不會進一步評估。 – Fildor