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

Перехват многотипных исключений




Пример

Далее представлен сегмент кода, демонстрирующий использование многократных операторов try/catch.

try { file = new FileInputStream(fileName); x = (byte) file. read(); }catch(IOException e1) { e1. printStackTrace(); return -1; }catch(FileNotFoundException e2) // Недействительно! { e2. printStackTrace(); return -1; }

Перехват многотипных исключений

В среде Java 7, Вы можете произвести обработку более чем одного исключения при использовании одного блока catch, данное свойство упрощает код. Ниже представлена модель реализации:

catch (IOException|FileNotFoundException ex) { logger. log(ex); throw ex;

Ключевые слова throws/throw

В случае если метод не может осуществить обработку контролируемого исключения, производится соответствующее уведомление при использовании ключевого слова throws в Java. Ключевое слово throws появляется в конце сигнатуры метода.

При использовании ключевого слова throw вы можете произвести обработку вновь выявленного исключения либо исключения, которое было только что перехвачено.

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

Представленный ниже метод отображает, что им генерируется RemoteException:

 

Пример 1

import java. rmi. RemoteException; public class Test { public void deposit(double amount) throws RemoteException { // Реализация метода throw new RemoteException(); } // Остаток определения класса}

Метод также может объявить о том, что им генерируется более чем одно исключение, в случае чего исключения представляются в виде перечня, отделенные друг от друга запятыми. К примеру, следующий метод оповещает о том, что им генерируются RemoteException и InsufficientFundsException:

Пример 2

import java. rmi. RemoteException; public class Test { public void withdraw(double amount) throws RemoteException,       InsufficientFundsException { // Реализация метода } // Остаток определения класса}

Блок finally

В Java finally следует за блоком try либо блоком catch. Блок finally в коде выполняется всегда независимо от наличия исключения.

Использование блока finally позволяет запустить какой-либо оператор, предназначенный для очистки, не зависимо от того, что происходит в защищенном коде.

Блок finally в Java появляется по окончании блоков catch, его синтаксис выглядит следующим образом:

 

Синтаксис

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

Пример

public class Test { public static void main(String args[]) { int array[] = new int[2]; try {     System. out. println(" Доступ к третьему элементу: " + array[3]); }catch(ArrayIndexOutOfBoundsException e) {    System. out. println(" Исключение: " + e); }finally {    array[0] = 6;     System. out. println(" Значение первого элемента: " + array[0]);     System. out. println(" Оператор finally выполнен. " ); } }}

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

Исключение: java. lang. ArrayIndexOutOfBoundsException: 3Значение первого элемента: 6Оператор finally выполнен.

Следует помнить, что:

· Выражение catch не может существовать без оператора try.

· При наличии блока try/catch, выражение finally не является обязательным.

· Блок try не может существовать при отсутствии выражения catch либо выражения finally.

· Существование какого-либо кода в промежутке между блоками try, catch, finally является невозможным.

 

Конструкция try-with-resources

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

Пример 1

import java. io. FileReader; import java. io. File; import java. io. IOException; public class Test { public static void main(String args[]) { FileReader fr = null;             try {    File f = new File(" file. txt" );     fr = new FileReader(f);          char [] array = new char[10];     fr. read(array); // чтение содержимого массива    for(char c: array)    System. out. print(c); // вывод символов на экран, один за одним }catch(IOException e1) {    e1. printStackTrace(); }finally {    try {       fr. close();     }catch(IOException e2) {             e2. printStackTrace();     } } }}

Конструкция try-with-resources, также именуемая как автоматическое управление ресурсами, представляет новый механизм обработки исключений, который был представлен в 7-ой версии Java, осуществляя автоматическое закрытие всех ресурсов, используемых в рамках блока try catch.

Чтобы воспользоваться данным оператором, вам всего лишь нужно разместить заданные ресурсы в круглых скобках, после чего созданный ресурс будет автоматически закрыт по окончании блока. Ниже представлен синтаксис конструкции try-with-resources.

 

Поделиться:





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



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