- `try` - ключевое слово для отметки начала блока кода, который потенциально может привести к ошибке - `catch` - ключевое слово для отметки начала блока кода, предназначенного для перехвата и обработки исключений - `finally` - ключевое слово для отметки начала блока кода, которое является дополнительным. Этот блок помещается после последнего блока `catch`. Управление передается в блок `finally` в любом случае - `throw` - служит для генерации исключений - `throws` - ключевое слово, которое прописывается в сигнатуре метода, и обозначающее, что метод потенциально может выбросить исключение с указанным типом ## Иерархия классов исключений ![Иерархия классов исключений](../Pictures/07_01.%20Иерархия%20классов%20исключений.png) ### Класс `Error` (непроверяемые) - `ThreadDeath` - вызывается при неожиданной останове потока посредством метода `Thread.stop()` - `StackOverflowError` - ошибка переполнения стека - `OutOfMemoryError` - ошибка переполнения памяти ### Класс `RuntimeException` (непроверяемые) - `IndexOutOfBoundsException` - индекс некоторого элемента в структуре данных (массив/коллекция) не попадает в диапазон имеющихся индексов - `NullPointerException` - ссылка на объект хранит `null` - `ClassCastException` - ошибка приведения типов - `ArithmeticException` - недопустимые арифметические операции, например, деление на 0 ### Класс `Exception` (проверяемые) - `ClassNotFoundException` - класс не найден - `IOException` - ошибка ввода-вывода - `FileNotFoundException` - файл не найден - `InstantiationException` - попытка создать объект абстрактного класса или интерфейса - `NoSuchFieldException` - запрошенное поле не существует - `NoSuchMethodException` - запрошенный метод не существует #### Методы класса `Exception` - `toString()` - название класса и текст ошибки - `getMessage()` - текст ошибки - `getStackTrace()` - возвращает массив, содержащий трассировку стека исключения - `printStackTrace()` - отображает трассировку стека ```java public class Main { public static void main(String[] args) throws Exception { try { int a = 100 / 0; } catch(Exception ex) { System.out.println(ex.getMeassge()); ex.printStackTrace(); } } } ```