> For the complete documentation index, see [llms.txt](https://comaqa.gitbook.io/java-automation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://comaqa.gitbook.io/java-automation/oop-v-java/isklyucheniya.md).

# Исключения

Исключениями или исключительными ситуациями (состояниями) называются ошибки, возникшие в программе во время её работы.

Все исключения в Java являются объектами. Поэтому они могут порождаться не только автоматически при возникновении исключительной ситуации, но и создаваться самим разработчиком. Исключения делятся на несколько классов, но все они имеют общего предка — класс Throwable. Его потомками являются подклассы Exception и Error.

Исключения (Exceptions) являются результатом проблем в программе, которые в принципе решаемы и предсказуемы. Например, произошло деление на ноль в целых числах.

Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует пытаться обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM.

Откомпилируем и запустим такую программу:

```
class Main {
    public static void main(String[] args) {
        int a = 4;
        System.out.println(a/0);
    }
}
```

В момент запуска на консоль будет выведено следующее сообщение:

```
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Main.main(Main.java:4)
```

Из сообщения виден класс случившегося исключения — ArithmeticException. Это исключение можно обработать:

```
class Main {
    public static void main(String[] args) {
        int a = 4;
        try {
            System.out.println(a/0);
        } catch (ArithmeticException e) {
            System.out.println("Произошла недопустимая арифметическая операция");
        }
     }
}
```

Теперь, вместо стандартного сообщения об ошибке будет выполняться блок catch

Вопрос 1

```
Зачем разработчикам самим создавать исключительные ситуации?
```

Вопрос 2

```
System.out.println("Произошла недопустимая арифметическая операция"); - в чём 
преимущество такого сообщения?
```
