Java перехватывает несколько исключений
Java перехватывает множественные исключения
В этом руководстве мы научимся обрабатывать несколько исключений в Java с помощью примеров.
До Java 7 нам приходилось писать несколько кодов обработки исключений для разных типов исключений, даже если код был избыточным.
Возьмем пример.
Пример 1. Несколько блоков catch
05
Вывод
15пре>В этом примере могут возникнуть два исключения:
02
потому что мы пытаемся разделить число на 0.19
потому что мы объявили новый целочисленный массив с границами массива от 0 до 9 и пытаемся присвоить значение индексу 10.
Мы распечатываем сообщение об исключении как в 24
блокирует, т. е. дублирует код.
Ассоциативность оператора присваивания 38
справа налево, поэтому 41
выдается первым с сообщением
/ by zero
.
Обработка нескольких исключений в блоке catch
В Java SE 7 и более поздних версиях теперь мы можем перехватывать более одного типа исключений в одном 54
. блокировать.
Каждый тип исключения, который может быть обработан с помощью 60
блок отделяется вертикальной чертой или вертикальной чертой 73
.
Его синтаксис:
22
Пример 2. Блок с несколькими перехватами
36
Вывод
44
Перехват нескольких исключений в одном 81
блок уменьшает дублирование кода и повышает эффективность.
Байт-код, сгенерированный при компиляции этой программы, будет меньше, чем у программы, имеющей несколько 91
. блоки, так как нет избыточности кода.
Примечание. Если 106
блок обрабатывает несколько исключений, параметр catch неявно равен 114
. Это означает, что мы не можем присваивать значения параметрам catch.
Перехват основного исключения
При перехвате нескольких исключений в одном 124
блок, правило обобщается на специализированное.
Это означает, что при наличии иерархии исключений в 132
блок, мы можем перехватывать только базовое исключение вместо того, чтобы перехватывать несколько специализированных исключений.
Возьмем пример.
Пример 3:Перехват только базового класса исключений
53
Вывод
65
Мы знаем, что все классы исключений являются подклассами класса 146
. учебный класс. Таким образом, вместо того, чтобы перехватывать несколько специализированных исключений, мы можем просто перехватывать 155
класс.
Если базовый класс исключений уже указан в 160
block, не используйте дочерние классы исключений в одном и том же 174
блокировать. В противном случае мы получим ошибку компиляции.
Возьмем пример.
Пример 4. Перехват базовых и дочерних классов исключений
77
Вывод
84
В этом примере 189
и 190
оба являются подклассами 209
учебный класс. Итак, мы получаем ошибку компиляции.
java