В духе вопроса, как задано:
Вам нужно будет отловить различные исключения в вашем методе, а затем выбросить CustomException
из вашего блока catch
. Возможность исключения «обтекания» вокруг другого исключения встроена в сам класс Exception
(см. Конструктор Exception(Throwable cause)
).
public void method() throws IOException, CustomException {
try {
//Body of the method
} catch (IllegalArgumentException | InstantiationException | IllegalAccessException e) {
throw new CustomException(e);
}
}
Тем не менее, IllegalArgumentException
не является проверенным исключением, так что вам все равно не придется его объявлять.
Также стоит отметить, что вышеизложенное основано на том, что вы указали, что хотите создать собственное исключение. Другой вариант - объявить в вашем предложении throws
некоторый тип, который является общим базовым классом различных проверенных исключений, которые могут фактически быть выброшены. Например, оба отмеченных исключения в вашем списке являются подклассами ReflectiveOperationException
, так что вы можете просто сказать
public void method() throws IOException, ReflectiveOperationException {
//Body of the method
}
Конечно, компромисс заключается в том, что вы не настолько информативны, как те, кто пишет код, вызывающий ваш метод, что может ограничить качество их обработчиков исключений. В крайнем случае, вы могли бы просто сказать throws Thorwable
, но это довольно плохая форма.