Подтвердить что ты не робот

Расширение исключения /RunTimeException в java?

У меня есть классы ниже.

public class ValidationException extends RuntimeException {


}

и

public class ValidationException extends Exception {


}

Я смущен, когда пользовательское исключение должно расширять RunTimeException и когда оно должно растягиваться Exception. Не могли бы вы объяснить мне, есть ли какой-либо недостаток, заключающийся в прямом расширении RunTimeException?

Спасибо!

4b9b3361

Ответ 1

  RuntimeException не проверяются, в то время как Exception проверяются (вызов код должен обрабатывать их).

Настраиваемое исключение должно расширяться RuntimeException, если вы хотите отключить его, иначе расширьте его с помощью Exception.

С неконтролируемыми исключениями, вызывающий метод кода не обязан объявлять в своем предложении throws любые подклассы RuntimeException, которые могут быть выброшены во время выполнения метода, но не перехвачены.

Поскольку вызывающий метод может не обрабатывать "RuntimeException", нужно быть осторожным, создавая RuntimeException.

Исключения во время выполнения представляют проблемы, которые являются результатом программной проблемы, и поэтому нельзя ожидать, что клиентский код API будет восстанавливаться после них или обрабатывать их каким-либо образом. Такие проблемы включают арифметические исключения, такие как деление на ноль; исключения указателя, такие как попытка доступа к объекту через нулевую ссылку; и индексация исключений, таких как попытка доступа к элементу массива через индекс, который слишком велик или слишком мал.

Исключения во время выполнения могут возникать где угодно в программе, и в типичном случае они могут быть очень многочисленными. Необходимость добавлять исключения времени выполнения в каждое объявление метода уменьшит ясность программы. Таким образом, компилятор не требует, чтобы вы перехватывали или указывали исключения во время выполнения (хотя вы можете).

Источник/Дальнейшее чтение: Непроверенныеисключения - Противоречие

Ответ 2

Если вы расширяете RuntimeException, вам не нужно объявлять его в предложении throws (т.е. это неконтролируемое исключение). Если вы расширяете исключение, вы делаете (это проверенное исключение).

Некоторые люди утверждают, что все исключения должны простираться от RuntimeException, но если вы хотите заставить пользователя обработать исключение, вы должны расширить Exception.

Ответ 3

  Один из случаев, когда обычной практикой является генерирование RuntimeException, - это когда пользователь вызывает метод неправильно. Например, метод может проверить, является ли один из его аргументов неверным нулем. Если аргумент имеет значение null, метод может вызвать исключение NullPointerException, которое является непроверенным исключением.

Вообще говоря, не создавайте RuntimeException и не создавайте подкласс RuntimeException просто потому, что вы не хотите беспокоиться об указании исключений, которые могут генерировать ваши методы.

Вот практический совет: если разумно ожидать, что клиент восстановится после исключения, сделайте его проверенным исключением. Если клиент не может ничего сделать для восстановления из исключения, сделайте его непроверенным исключением.

для более прочитайте это.

Ответ 4

Определение RuntimeException

RuntimeException - суперкласс из тех исключений, которые могут быть выброшены во время нормальной работы виртуальной машины Java.

RuntimeException и его подклассы - это исключенные исключения. Непроверенные исключения не должны быть объявлены в методе или конструктор бросает предложение, если они могут быть брошены путем выполнения метод или конструктор и распространяются вне метода или граница конструктора.

Если вы расширяете Exception, вам нужно поймать, где бы вы ни выбрали ValidationException.

Ответ 5

Если вы находитесь в структуре приложения, и ваша инфраструктура хороша для обработки исключения, когда есть уведомление об исключении из вашего кода. В этом случае вы можете использовать свой собственный класс исключений как подкласс RuntimeException.

Это поможет вам НЕ писать код для обработки исключения из иерархии исключений.