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

Синтаксис. Пример 2. Создание своих собственных исключений. Синтаксис try(FileReader fr = new FileReader("Путь к файлу")) { // использование ресурса }catch() { // тело catch    }}




Синтаксис

try(FileReader fr = new FileReader(" Путь к файлу" )) { // использование ресурса }catch() { // тело catch    }}

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

Пример 2

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

При работе с конструкцией try-with-resources следует принимать во внимание следующие нюансы:

· С целью использования конструкции try-with-resources следует реализовать интерфейс AutoCloseable, после чего соответствующий метод close() будет вызван автоматически во время выполнения.

· В конструкции try-with-resources возможно указание одного и более классов.

· При указании нескольких классов в блоке try конструкции try-with-resources, закрытие данных классов будет производиться в обратном порядке.

· За исключением внесения ресурсов в скобки, все элементы являются равными аналогично нормальному блоку try/catch в составе блока try.

· Ресурсы, внесенные в try, конкретизируются до запуска блока try.

· Ресурсы непосредственно в составе блока try указываются как окончательные.

 

Создание своих собственных исключений

Вы можете создать свои собственные исключения в среде Java. При записи собственных классов исключений следует принимать во внимание следующие аспекты:

· Все исключения должны быть дочерними элементами Throwable.

· Если вы планируете произвести запись контролируемого исключения с автоматическим использованием за счет правила обработки или объявления, вам следует расширить класс Exception.

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

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

class MyException extends Exception {}

Вам лишь необходимо расширить предопределенный класс Exception с целью создания собственного исключения. Данная категория относится к контролируемым исключениям. Следующий класс InsufficientFundsException исключительных ситуаций, определяемых пользователем, расширяет класс Exception, делая его контролируемым исключением. Класс исключений, подобно всем остальным классам, содержит используемые области и методы.

Пример

// Название файла InsufficientFundsException. javaimport java. io. *; public class InsufficientFundsException extends Exception { private double amount;    public InsufficientFundsException(double amount) { this. amount = amount; }    public double getAmount() { return amount; }}

 

С целью демонстрации наших исключений, определяемых пользователем, следующий класс Checking содержит метод withdraw(), генерирующий InsufficientFundsException.

// Название файла Checking. javaimport java. io. *; public class Checking { private int number; private double balance;    public Checking(int number) { this. number = number; }    public void deposit(double amount) { balance += amount; }    public void withdraw(double amount) throws InsufficientFundsException { if(amount < = balance) {    balance -= amount; }else {    double needs = amount - balance;     throw new InsufficientFundsException(needs); } }    public double getBalance() { return balance; }    public int getNumber() { return number; }}

 

Следующая программа Bank демонстрирует вызов методов deposit() и withdraw() класса Checking.

// Название файла Bank. javapublic class Bank { public static void main(String [] args) { Checking c = new Checking(101); System. out. println(" Депозит $300... " ); c. deposit(300. 00);       try {    System. out. println(" \nСнятие $100... " );     c. withdraw(100. 00);     System. out. println(" \nСнятие $400... " );     c. withdraw(400. 00); }catch(InsufficientFundsException e) {    System. out. println(" Извините, но у Вас $" + e. getAmount());     e. printStackTrace(); } }}

Скомпилируйте все три выше обозначенные файла и произведите запуск Bank. Вследствие этого будет получен следующий результат:

Депозит $300... Снятие $100... Снятие $400... Извините, но у Вас $200. 0InsufficientFundsException    at Checking. withdraw(Checking. java: 25)    at Bank. main(Bank. java: 13)

Общие исключения

В Java можно выделить две категории исключений и ошибок.

· Исключения JVM — данная группа представлена исключениями/ошибками, которые вызываются непосредственно и логически со стороны JVM. Примеры: NullPointerException, ArrayIndexOutOfBoundsException, ClassCastException.

· Программные исключения — данные исключения вызываются непосредственно приложением либо программистами API. Примеры: IllegalArgumentException, IllegalStateException.

 

20. 2. Java — Встроенные исключения

Java определяет несколько классов исключений внутри стандартного пакета java. lang.

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

Java определяет несколько других типов исключений, которые относятся к его различным библиотекам класса. Ниже приведен список неконтролируемых исключений на этапе выполнения (Unchecked RuntimeException).

Исключение и описание
java. lang. ArithmeticException Арифметическая ошибка, например, деление на ноль.
java. lang. ArrayIndexOutOfBoundsException Индекс массива выходит за пределы.
java. lang. ArrayStoreException Присвоение элементу массива несовместимого типа.
java. lang. ClassCastException Недопустимое приведение типов.
java. lang. IllegalArgumentException Недопустимый аргумент, используемый для вызова метода.
java. lang. IllegalMonitorStateException Недопустимая работа монитора, например, ожидание разблокированного потока.
java. lang. IllegalStateException Окружающая обстановка или приложение находится в неправильном состоянии.
java. lang. IllegalThreadStateException Запрошенная операция несовместима с текущим состоянием потока.
java. lang. IndexOutOfBoundsException Некоторый тип индекса находится за пределом.
java. lang. NegativeArraySizeException Массив создан с отрицательным размером.
java. lang. NullPointerException Недопустимое использование нулевой ссылки.
java. lang. NumberFormatException Неверное преобразование строки в числовой формат.
java. lang. SecurityException Попытка нарушить безопасность.
java. lang. StringIndexOutOfBounds Попытка индексирования за пределами строки.
java. lang. UnsupportedOperationException Была обнаружена неподдерживаемая операция.

 

Ниже приведен список контролируемых исключений (Checked Exceptions) в Java, определенных в java. lang.

Исключение и описание
java. lang. ClassNotFoundException Класс не найден.
java. lang. CloneNotSupportedException Попытка клонировать объект, который не реализует Cloneable интерфейс.
java. lang. IllegalAccessException Запрещен доступ к классу.
java. lang. InstantiationException Попытка создать объект абстрактного класса или интерфейса.
java. lang. InterruptedException Один поток был прерван другим потоком.
java. lang. NoSuchFieldException Запрошенное поле не существует.
java. lang. NoSuchMethodException Запрошенный метод не существует.

 

Поделиться:





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



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