> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/obrabotka-isklyuchenii.md).

# Обработка исключений

1. **Блок try-catch**:
   * В Java исключения обрабатываются с использованием блока `try-catch`.
   * В блоке `try` размещается код, который может вызвать исключение.
   * В блоке `catch` указывается код, который будет выполнен в случае, если исключение было сгенерировано в блоке `try`.
   * Можно использовать несколько блоков `catch` для обработки различных типов исключений.

```java
try {
    // Код, который может вызвать исключение
} catch (ExceptionType1 e) {
    // Обработка исключения типа ExceptionType1
} catch (ExceptionType2 e) {
    // Обработка исключения типа ExceptionType2
}
```

2. **Блок finally**:
   * Опционально, после блока `catch`, может быть добавлен блок `finally`.
   * Блок `finally` содержит код, который должен быть выполнен в любом случае, даже если в блоке `try` не было исключений.
   * Блок `finally` часто используется для освобождения ресурсов, таких как закрытие файлов или соединений с базой данных.

```java
try {
    // Код, который может вызвать исключение
} catch (Exception e) {
    // Обработка исключения
} finally {
    // Код, который будет выполнен в любом случае
}
```

3. **Блок throw**:
   * Исключение можно явно сгенерировать с помощью ключевого слова `throw`.
   * Это может быть полезно, если вы хотите сообщить об ошибке или исключительной ситуации в своем коде.

```java
if (условие) {
    throw new ExceptionType("Сообщение об ошибке");
}
```

4. **Обработка необработанных исключений**:
   * Если исключение не обработано в методе, оно передается вызывающему коду.
   * В Java все исключения должны быть или обработаны с помощью блока `try-catch`, или объявлены в сигнатуре метода с помощью ключевого слова `throws`.

```java
public void someMethod() throws Exception {
    // Код, который может вызвать исключение
}
```
