# Иерархия исключений

В Java исключения организованы в иерархическую структуру классов. На вершине этой иерархии находится класс `Throwable`, который является суперклассом для всех исключений и ошибок в Java. Исключения и ошибки в Java образуют две ветви этой иерархии: ветвь исключений (`Exception`) и ветвь ошибок (`Error`).

1. **`Throwable`**:
   * Является корневым классом иерархии исключений и ошибок в Java.
   * Имеет два основных подкласса: `Exception` и `Error`.
2. **`Exception`**:
   * Представляет исключительные ситуации, с которыми может столкнуться программа во время выполнения.
   * Разделены на два типа: проверяемые исключения (checked exceptions) и непроверяемые исключения (unchecked exceptions).
   * Некоторые из наиболее часто используемых подклассов `Exception`:
     * `IOException`: Возникает, когда происходит ошибка ввода-вывода.
     * `SQLException`: Возникает, когда происходит ошибка доступа к базе данных.
     * `NullPointerException`: Возникает, когда программа пытается использовать ссылку на объект, у которого значение `null`.
3. **`Error`**:
   * Представляет ошибки, которые обычно выходят за пределы контроля программы и не рекомендуется их обрабатывать.
   * Часто связаны с проблемами внутри JVM или с окружением выполнения.
   * Примеры ошибок:
     * `OutOfMemoryError`: Возникает, когда виртуальная машина Java (JVM) исчерпывает память.
     * `StackOverflowError`: Возникает, когда стек вызовов переполнен.
4. **Пользовательские исключения**:
   * Вы также можете создавать свои собственные классы исключений, расширяя классы `Exception` или `RuntimeException`. Это позволяет вам определять собственные типы исключений для специфических ситуаций в вашем приложении.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/ierarkhiya-isklyuchenii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
