Это правильный способ обработки исключений с помощью Apache ExceptionUtils.getRootCause? - PullRequest
0 голосов
/ 21 ноября 2018

Возможно ли, что условие «Мой код», указанное ниже, будет выполнено (true)?Я считаю, что нет, потому что getRootCause возвращает объект, приведенный к Throwable.Поэтому следует проверить, является ли Throwable подтипом MyOwnException, что не соответствует действительности.Так что, в общем, это неправильный способ использовать getRootCause для обработки исключений, не так ли?

MyOwnException part

public class MyOwnException extends Exception {
   // ....
}

Apache's ExceptionUtils.getRootCause

public static Throwable getRootCause(Throwable throwable) {
    List list = getThrowableList(throwable);
    return (list.size() < 2 ? null : (Throwable)list.get(list.size() - 1)); 
}

Мой код

try {
    // do something
} catch (Exception e) {
    try {
        Throwable exc = ExceptionUtils.getRootCause(e);
        if (exc instanceof MyOwnException) {
            // do something
        } 
    }
}

1 Ответ

0 голосов
/ 21 ноября 2018

instanceof проверит фактический тип времени выполнения экземпляра объекта.Не имеет значения, какой объявленный тип времени компиляции для переменной, содержащей объект.

Итак, ваше условие работает: если основной причиной является MyOwnException, то тело вашего блока if будет выполнено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...