На мой взгляд, есть одна небольшая проблема. Поскольку вы действительно хотите, чтобы метод handleAll
перебрасывал любое необработанное исключение, его необходимо объявить throws Exception
. Это означает, что так же, как методы, которые вызывают handleAll
.
Если X-
, Y-
и ZException
- все RuntimeExceptions
Я не вижу в этом ничего плохого. (Возможно, я что-то упустил из виду, поскольку я впервые вижу такой подход.)
Чтобы быть уверенным, что подход instanceof
ведет себя точно так же, как и предложения catch, я хотел бы рассмотреть проектирование handleAll(RuntimeException e)
следующим образом:
private void handleAll(RuntimeException e) {
try {
throw e;
} catch (XException xe) {
...
} catch (YException xe) {
...
} catch (ZException xe) {
...
}
}