3 回答
TA貢獻2041條經驗 獲得超4個贊
我建議考慮Objects.requireNonNull(T obj, String message)。您可以使用每個異常的詳細消息來構建鏈,例如
requireNonNull(requireNonNull(requireNonNull(
wsObject, "wsObject is null")
.getFoo(), "getFoo() is null")
.getBar(), "getBar() is null");
我建議您不要使用特殊的返回值,例如-1。那不是Java風格。Java設計了異常機制來避免這種來自C語言的老式方式。
投擲NullPointerException也不是最好的選擇。您可以提供自己的異常(將其選中以保證將由用戶處理,或者不選中以進行更輕松的方式對其進行處理)或使用您正在使用的XML解析器中的特定異常。
TA貢獻1790條經驗 獲得超9個贊
假設情況確實如此,假設類結構確實不受我們的控制,我認為按照問題中的建議抓住NPE確實是一個合理的解決方案,除非性能是主要問題。一個小的改進可能是包裝throw / catch邏輯以避免混亂:
static <T> T get(Supplier<T> supplier, T defaultValue) {
try {
return supplier.get();
} catch (NullPointerException e) {
return defaultValue;
}
}
現在,您可以簡單地執行以下操作:
return get(() -> wsObject.getFoo().getBar().getBaz().getInt(), -1);
添加回答
舉報
