Классы исключений

Последнее обновление: 23.04.2018

Базовым классом для всех исключений является класс Throwable. От него уже наследуются два класса: Error и Exception. Все остальные классы являются производными от этих двух классов.

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

Собственно исключения наследуются от класса Exception. Среди этих исключений следует выделить класс RuntimeException. RuntimeException является базовым классом для так называемой группы непроверяемых исключений (unchecked exceptions) - компилятор не проверяет факт обработки таких исключений и их можно не указывать вместе с оператором throws в объявлении метода. Такие исключения являются следствием ошибок разработчика, например, неверное преобразование типов или выход за пределы массива.

Некоторые из классов непроверяемых исключений:

  • ArithmeticException: исключение, возникающее при делении на ноль

  • IndexOutOfBoundException: индекс вне границ массива

  • IllegalArgumentException: использование неверного аргумента при вызове метода

  • NullPointerException: использование пустой ссылки

  • NumberFormatException: ошибка преобразования строки в число

Все остальные классы, образованные от класса Exception, называются проверяемыми исключениями (checked exceptions).

Некоторые из классов проверяемых исключений:

  • CloneNotSupportedException: класс, для объекта которого вызывается клонирование, не реализует интерфейс Cloneable

  • InterruptedException: поток прерван другим потоком

  • ClassNotFoundException: невозможно найти класс

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

public Person clone() throws CloneNotSupportedException{
    
    Person p = (Person) super.clone();
    return p;
}

В итоге получается следующая иерархия исключений:

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

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

  • Метод getMessage() возвращает сообщение об исключении

  • Метод getStackTrace() возвращает массив, содержащий трассировку стека исключения

  • Метод printStackTrace() отображает трассировку стека

Например:

try{
    int x = 6/0;
}
catch(Exception ex){
        
    ex.printStackTrace();
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850