Я читаю эффективную Java-версию Дж. Блоха и теперь я нахожусь в разделе о проверенных/непроверенных исключениях. Он сказал, что (подчеркнуть мой):Общие сведения об исключениях, отмеченных проверкой ловли
противостоя пользователь API с клетчатым исключением, API дизайнер пред- сентами мандата для восстановления из условия. Пользователь может игнорировать мандат, улавливая исключение и игнорируя его, но обычно это Плохая идея (Пункт 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 тем, что он сказал:
использования проверяемых исключений для условий, из которых абонент может разумно ожидать, чтобы восстановить
[...]
исключения использования во время выполнения в указывают на ошибки программирования
Я, хотя он должен быть неквалифицированным.
ВОПРОС: ли это сочтено целесообразным оставить Hadler проверяемого исключения пустым, если мы обеспечили, что expcetion никогда не будет выброшено где-то раньше?
На самом деле, хороший совет. Большое спасибо. –