2012-02-06 2 views
0

Недавно я задал еще один вопрос, связанный с тем, чтобы не использовать исключения шаблонов, если они не нужны (или, более конкретно, обрабатываемая ошибка не требуется, поскольку приложение просто не может выжить, если вызывается ошибка в первую очередь). Я решил раскачиваться в пользу непроверенных ошибок в большинстве случаев, в основном для удобства чтения. В других ситуациях у меня, похоже, нет другого выбора, кроме как использовать большие, уродливые блоки catch catch.Обработка исключений из кода «Ограниченный»

Например, в одной ситуации я использую класс apan commons BeanUtilities MethodUtils, чтобы использовать интроспекцию для вызова метода в объекте неизвестного типа. В этой ситуации, видя, как я использую класс, который я не контролирую. Я вынужден идти вместе с проверенной философией исключения и улавливать 3 разных исключения каждый раз, когда я использую этот метод? Или есть способ обойти это?

SQL sql = null; 
try { 
    sql = (SQL) MethodUtils.invokeExactMethod(bean, "getSQL", (Object[])null); 
} catch (NoSuchMethodException e) { 
    e.printStackTrace(); 
} catch (IllegalAccessException e) { 
    e.printStackTrace(); 
} catch (InvocationTargetException e) { 
    e.printStackTrace(); 
} 

ответ

0

Помимо ответа Мерсенна, вы можете просто использовать общий базовый класс этих исключений в свой улов блока:

SQL sql = null; 
try { 
    sql = (SQL) MethodUtils.invokeExactMethod(bean, "getSQL", (Object[])null); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Это будет ловить все три исключения. Если вы не планируете выполнять какие-либо конкретные меры по разным исключениям, это подходящее решение. И он работает со всеми версиями JDK.

2

Комплекс catch читаемость - очень распространенная проблема. В Java 7 это может быть в более читаемом виде:

SQL sql = null; 
try { 
    sql = (SQL) MethodUtils.invokeExactMethod(bean, "getSQL", (Object[])null); 
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { 
    e.printStackTrace(); 
} 
Смежные вопросы