Как добавить пользовательское сообщение в исключение (в переопределенных методах, которые CANT генерирует исключение)? - PullRequest
0 голосов
/ 02 марта 2019

Я знаю, что всегда могу поймать исключение в блоке try/catch и выбросить Exception (message, e) вот так

    try {
        //...my code throwing some exception
    } catch (IndexOutOfBoundsException e) {
        throw new Exception("Error details: bla bla", e);
    }

Легко.Но это не работает в переопределенных методах, потому что они не могут генерировать исключения с помощью супер-метода, а не throw.

Итак, каковы мои варианты сейчас?

1 Ответ

0 голосов
/ 02 марта 2019

Вы всегда можете выбрать непроверенные исключения, то есть подклассы RuntimeException класса.Эти исключения вместе с подклассами Error освобождены от проверки во время компиляции.

Здесь Parent определяет метод throwException(), в котором нет предложения throws и переопределений класса Childон выдает новый RuntimeException из блока catch.

class Parent{
    public void throwException(){
        System.out.println("Didn't throw");
    }
}
class Child extends Parent{
    @Override
    public void throwException(){
        try{
            throw new ArithmeticException("Some arithmetic fail");
        }catch(ArithmeticException ae){
            throw new RuntimeException(ae.getMessage(), ae);
        }
    }
}
...