我正在閱讀J. Bloch的Effective Java,現在我在關於checked/unchecked exceptions的部分。他說,(強調雷):理解捕獲檢查的異常
由API用戶與檢查異常,在API設計 預sents的任務是從狀態中恢復對抗。用戶 通過捕捉異常並忽略它的任務,但 這通常是壞主意(項目65)。
現在,考慮返回具有相同類型或亞型類的所有靜態數據成員列表的方法:
public static <T> List<? extends T> getPublicStaticFields(Class<T> clazz){
List<T> fields = new ArrayList<>();
for(Field f : clazz.getDeclaredFields()){
if(Modifier.isStatic(f.getModifiers()) &&
Modifier.isPublic(f.getModifiers())){
Object fieldValue;
try {
fieldValue = f.get(null);
if(clazz.isAssignableFrom(fieldValue.getClass()))
fields.add((T) fieldValue);
} catch (IllegalAccessException e) { } // <------- Ignoring the execption
}
}
return Collections.unmodifiableList(fields);
}
的事情是我不知道我應該放什麼異常處理器。我進行訪問的,如果條件檢查:
f(Modifier.isStatic(f.getModifiers()) &&
Modifier.isPublic(f.getModifiers()))
因此IllegalAccessViolation
將永遠不會被拋出。此外,爲什麼IllegalAccessViolation
被選中似乎有點困惑。我認爲這是一個編程錯誤,並judjing他所說的:
使用checked異常從中調用者可以 合理預期收回條件
[...]
使用運行時例外 表明編程錯誤
我雖然它應該是一個未經檢查的。
問:是,如果我們確保了expcetion將永遠不會被以前在什麼地方拋出它認爲適當的離開檢查異常空的哈德勒?
其實很好的建議。非常感謝。 –