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

Встроенные исключения языка 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]

 

 




double arrow
Сейчас читают про: