- `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();
		}
	}
}
```