Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример 2. Иерархия исключений. Методы исключений. Обработка исключений — try и catch. Описание. Пример 2 public class Test {    public static void main(String args[]) { int array[] = {1, 2, 3}; System




Пример 2

public class Test {    public static void main(String args[]) { int array[] = {1, 2, 3}; System. out. println(array[4]); }}

При компиляции и выполнении обозначенной выше программы будет получено следующее исключение:

Exception in thread " main" java. lang. ArrayIndexOutOfBoundsException: 5    at Exceptions. Test. main(Test. java: 8)

· Ошибки — не являются исключениями, однако представляют проблемы, которые возникают независимо от пользователя либо программиста. Ошибки в вашем коде обычно игнорируются в виду того, что в редких случаях их обработка окажется результативной. К примеру, ошибка возникнет при переполнении стека. На этапе компиляции они также игнорируются.

Иерархия исключений

Все классы исключений в Java представляют подтипы класса java. lang. Exception. Класс исключений является подклассом класса Throwable. Помимо класса исключений существует также подкласс ошибок, образовавшихся из класса Throwable.

Ошибки представляют аварийное состояние вследствие значительных сбоев, которые не обрабатываются программами Java. Генерирование ошибок предназначено для отображения ошибок, выявленных средой выполнения. Примеры: JVM исчерпал имеющийся объем памяти. Обычно, программы не могут восстановить неполадки, вызванные ошибками.

Класс исключений делится на два основных подкласса: класс IOException и класс RuntimeException.

Методы исключений

Далее представлен список важных методов, доступных в классе Throwable.

Метод и описание
public String getMessage() Возврат подробного сообщения о произошедшем исключении. Инициализация данного сообщения производится в конструкторе Throwable.
public Throwable getCause() Возврат причины исключения, представленной объектом Throwable.
public String toString() Возврат имени класса, соединенного с результатом getMessage().
public void printStackTrace() Выведение результата toString() совместно с трассировкой стека в System. err, поток вывода ошибок.
public StackTraceElement [] getStackTrace() Возврат массива, содержащего каждый элемент в трассировке стека. Элемент с номером 0 представляет вершину стека вызовов, последний элемент массива отображает метод на дне стека вызовов.
public Throwable fillInStackTrace() Заполняет трассировку стека данного объекта Throwable текущей трассировкой стека, дополняя какую-либо предшествующую информацию в трассировке стека.

Обработка исключений — try и catch

Метод производит обработку исключения при использовании ключевых слов try и catch.

Описание

Блок try/catch размещается в начале и конце кода, который может сгенерировать исключение. Код в составе блока try/catch является защищенным кодом, синтаксис использования try/catch выглядит следующим образом:

try { // Защищенный код}catch(НазваниеИсключения e1) { // Блок catch}

Код, предрасположенный к исключениям, размещается в блоке try. В случае возникновения исключения, обработка данного исключения будет производиться соответствующим блоком catch. За каждым блоком try должен немедленно следовать блок catch либо блок finally.

Оператор catch включает объявление типа исключения, которое предстоит обработать. При возникновении исключения в защищенном коде, блок catch (либо блоки), следующий за try, будет проверен. В случае, если тип произошедшего исключения представлен в блоке catch, исключение передается в блок catch аналогично тому, как аргумент передается в параметр метода.

Пример

Ниже представлен массив с заявленными двумя элементами. Попытка кода получить доступ к третьему элементу массива повлечет за собой генерацию исключения.

import java. io. *; public class Test { public static void main(String args[]) { try {    int array[] = new int[2];     System. out. println(" Доступ к третьему элементу: " + array[3]); }catch(ArrayIndexOutOfBoundsException e) {    System. out. println(" Исключение: " + e); } System. out. println(" Вне блока" ); }}

Вследствие этого будет получен следующий результат:

Исключение: java. lang. ArrayIndexOutOfBoundsException: 3Вне блока

Многократные блоки catch

За блоком try могут следовать несколько блоков catch. Синтаксис многократных блоков catch выглядит следующим образом:

try { // Защищенный код}catch(ИсключениеТип1 e1) { // Блок catch}catch(ИсключениеТип2 e2) { // Блок catch}catch(ИсключениеТип3 e3) { // Блок catch}

 

По ссылке представлен перечень наиболее распространенных контролируемых (checked) и неконтролируемых (unchecked) встроенных исключений в Java.

 

Представленные выше операторы демонстрируют три блока catch, однако, после однократного try количество данных используемых блоков может быть произвольным. В случае возникновения исключения в защищенном коде, исключение выводится в первый блок catch в списке. Если тип данных генерируемого исключения совпадает с ИсключениеТип1, он перехватывается в указанной области. В обратном случае, исключение переходит ко второму оператору catch. Это продолжается до тех пор, пока не будет произведен перехват исключения, либо оно не пройдет через все операторы, в случае чего выполнение текущего метода будет прекращено, и исключение будет перенесено к предшествующему методу в стеке вызовов.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...