У меня есть этот код:
try {
do_stuff();
return do_more_stuff();
} catch (UnsupportedEncodingException e) {
throw CustomException.programmer_error(e);
} catch (ProtocolException e) {
throw CustomException.programmer_error(e);
} catch (MalformedURLException e) {
throw CustomException.programmer_error(e);
} catch (SocketTimeoutException e) {
throw new CustomException(e);
} catch (IOException e) {
throw CustomException.unexpected_error(e);
}
Теперь мне нужно иметь все эти блоки catch в другой подобной функции. Каков наилучший способ избежать дублирования здесь?
Обратите внимание, что код внутри двух блоков try не очень похож.
Также я не могу поставить набор уловов выше.
Заметьте, я бы предпочел избежать:
try {
do_stuff();
return do_more_stuff();
} catch (Exception e) {
handle_exception_via_rtti(e);
}