Как избежать использования блоков try… catch

Я понимаю, что это необходимо ... конечно, для написания правильного кода, но есть ли шаблон проектирования, который поможет избежать повторения блоков try ... catch повторно в классе ? Например, я написал конкретный класс, который выдает 5 разных исключений.

public void iterateComparatorResults(ArrayList<ComparatorValue> results) throws IOException, IllegalArgumentException, IntrospectionException, IllegalAccessException, InvocationTargetException {
    Iterator<ComparatorValue> iterator = results.iterator();
    for(int i=0; i<results.size(); i++) {
        //Set data variables.
        setBeans(results.get(i).getClientBean(), results.get(i).getServerBean());
        setValues(results.get(i).getClientValue(), results.get(i).getServerValue());

        if(results.get(i).isMatch()) {
            //Data matches.
            runIteratorTrueAction();
        } else if(results.get(i).getInnerBeans() != null){
            //Value is a nested bean. Iterate again.
            ArrayList<ArrayList<ComparatorValue>> innerResults = results.get(i).getInnerBeans();
            for(int r=0; r<innerResults.size(); r++) {
                iterateComparatorResults(innerResults.get(r));
            }

        } else {
            //Data does not match.
            runIteratorFalseAction();
        }
    }
}

Каждый раз, когда я ссылаюсь на этот конкретный метод из любого другого класса, я должен использовать блок try catch, который выглядит следующим образом.

try {
    beanComparator.setIteratorFalseAction(falseAction);
                beanComparator.iterateComparatorResults(beanComparator.compareBeans(contact, compareContact));
} catch (IllegalArgumentException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} catch (IntrospectionException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}

Я надеюсь, что есть какой-то шаблон проектирования, который я могу реализовать, чтобы я мог создать отдельный класс или что-то в этом роде и спрятать все блоки try в одном месте, затем ссылаться на этот класс и использовать блоки try без необходимости их записи. Подобно тому, как это делают другие фреймворки, такие как Spring? Мне просто нужно небольшое руководство о том, как это сделать, поскольку я даже не знаю, с чего начать.

5
задан ryandlf 6 February 2012 в 03:44
поделиться