Может ли Java автоматически обернуть объект и выбросить как часть исключения throws? - PullRequest
1 голос
/ 26 июня 2019

У меня есть несколько методов в классе;каждый метод был объявлен с опцией «throws Exception».Всякий раз, когда возникает исключение, я хочу, чтобы один объект, присутствующий в этом классе, автоматически оборачивался и создавал пользовательский объект исключения.

Предполагается, что этот вновь созданный пользовательский объект будет сгенерирован.

Я не хочу создавать блок try-catch в каждом методе и создавать объект пользовательского исключения, который будет иметь объектЯ хочу быть завернутым вместе.

Есть ли способ сделать это без вышеуказанного подхода.Если да, то какие изменения кода мне нужно сделать?

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Я думаю, что вы можете сделать это с помощью Spring AOP.Примерно так:

import org.springframework.aop.ThrowsAdvice;

public class MyExceptionInterceptor implements ThrowsAdvice {

    public void afterThrowing(Method method, Object[] args, Object target, Exception ex) {
        ...
        throw new WrappedException(somehow find object you want to wrap);

К сожалению, у меня нет большого опыта использования этого.Это сообщение может помочь:

Как Spring узнает, что необходимо вызвать ThrowsAdvice.afterThrowing?

В Интернете есть учебники по использованию "ThrowsAdvice".Я предлагаю проверить некоторые из них.

0 голосов
/ 26 июня 2019

(я полагаю, вы не спрашиваете, как определить пользовательский класс исключений ...)

"Есть ли способ сделать это без вышеуказанного подхода."

Не на чистой Java.Возможно, вы сможете сделать это с помощью AOP или какой-либо другой технологии, которая переписывает ваши байт-коды для внедрения логики «лови-и-оборачивай-и-бросай» в свои методы.

Например, в этой статье объясняется, какдля перевода исключений с помощью AspectJ:

...