Все исключения не являются ошибками. Это может быть предметом обсуждения, что все ошибки являются исключениями или нет.
Можно сказать, что исключениями являются события, которые не являются частью нормального или ожидаемого потока приложения. Эти события могут быть независимыми от того, как написан код, где ошибка, по сути, является результатом плохого кода (например, неправильный расчет).
Вот пример того, как не обработка исключения может быть ошибкой.
Предположим, что есть программа, которая записывает некоторые данные на внешнее устройство хранения. Во время записи внешнее запоминающее устройство было отключено, разбилось или может быть уничтожено (по какой-либо причине). Теперь это исключительный случай, теперь независимо от того, поддерживает ли язык программирования исключительную обработку или нет, если программа аварийно завершает работу или ведет себя неправильно из-за этого события, это ошибка. (Конечный пользователь может не иметь представления о том, что произошло. Это также очень неприятно) , Но если программа корректно прерывает процесс, уведомляет пользователя (другими словами, обрабатывает исключение), это явно не ошибка.
Языки программирования try catch machanism, по сути, являются инструментом, облегчающим наш выход для обработки неожиданных событий.