исключение цепи в блоке catch - PullRequest
0 голосов
/ 24 октября 2018

У меня есть следующий код Java:

 public void someMethod(){

    try{

        // some code which generates Exception

    }catch(Exception ex1) {

        try{

                // The code inside this method can also throw some Exception
                myRollBackMethodForUndoingSomeChanges();

        }catch(Exception ex2){
            // I want to add inside `ex2` the history of `ex1` too
            // Surely , I cannot set cause of `ex2` as `ex1` as `ex2`
            // can be caused by it's own reasons.
            // I dont want `ex1` details to be lost if I just throw `ex2` from my method



        }
    }

}

Как это сделать?

РЕДАКТИРОВАТЬ: На самом деле это происходит на моем уровне обслуживания, и у меня есть совет контроллерадля регистрации.Поэтому я не хочу добавлять 2 регистратора здесь.

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете добавить ex1 к подавленным исключениям в ex2 с помощью метода addSuppressed перед его сбросом.

Пример быстрого кода:

public static void main(final String[] args) {
    try {
        throw new IllegalArgumentException("Illegal Argument 1!");
    } catch (final RuntimeException ex1) {
        try {
            throw new IllegalStateException("Illegal State 2!");
        } catch (final RuntimeException ex2) {
            ex2.addSuppressed(ex1);
            throw ex2;
        }
    }
}

приведет к исключениювывод:

Exception in thread "main" java.lang.IllegalStateException: Illegal State 2!
    at package.main(Main.java:26)
    Suppressed: java.lang.IllegalArgumentException: Illegal Argument 1!
        at package.main(Main.java:20)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...