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

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

Класс Exception не определяет никаких собственных методов, а наследует эти методы от класса Throwable. Таким образом, всем исключениям, даже тем, что вы создаете сами, доступны методы Throwable. Список их представ­лен в табл. ниже. Кроме того, вы можете переопределить один или несколько этих методов в создаваемых вами классах исключений.

Метод Описание
Throwable fillInStackTrace Создание собственных подклассов исключений() Возвращает Throwable-объект, который содержит полную трас­су стека. Этот объект может быть выброшен повторно
String getLocalizedMessage() Возвращает локализованное описание исключения
String getMessage() Возвращает описание исключения
void printStackTrace() Отображает трассу стека
String toString() Возвращает string-объект, со­держащий описание исключе­ния. Этот метод вызывается из println() при выводе Throwable-объекта

Следующий пример объявляет новый подкласс Exception и затем использует его, чтобы сигнализировать об аварийной ситуации в методе. Он переопре­деляет метод toString(), позволяя отобразить описание исключения с по­мощью println().

// Эта программа создает заказной тип исключения.

class MyException extends Exception {

private int detail;

MyException(int a) {

detail = a;

}

public String Создание собственных подклассов исключений toString() {

return "MyException[" + detail + "]";

}

}

class ExceptionDemo {

static void compute(int a) throws MyException {

System.out.println("Вызван compute(" + a + ")");

if(a > 10) throw new MyException(a);

System.out.println("Нормальный выход");

}

public static void main(String args[]) {

try {

compute(1);

compute(20);

} catch (MyException e) {

System.out.println("Вброшено " + e);

}

}

}

Этот пример определяет подкласс Exception с именем MyException. Этот подкласс весьма прост — он имеет только конструктор и перегруженный метод toString(), который отображает значение исключения. Класс ExceptionDemo определяет метод, названный compute(), который выбрасывает объект MyException. Исключение выбрасывается, когда целый параметр метода computed больше 10. Метод main о устанавливает обработчик исключе­ний для MyException, а затем Создание собственных подклассов исключений вызывает compute() с допустимым значением параметра (меньшим 10) и недопустимым, чтобы показать оба варианта работы программы. Вот результат:

Вызван compute(1)

Нормальный выход

Вызван compute(20)

Выброшено MyException[20]


documentazfajyn.html
documentazfariv.html
documentazfaytd.html
documentazfbgdl.html
documentazfbnnt.html
Документ Создание собственных подклассов исключений