Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: Error, Exception, try catch, throw, runtime error

В чем разница между Error и Exception?

Вопрос проверяет понимание различий между ошибками и исключениями в программировании, что важно для корректной обработки сбоев.

Короткий ответ

Error обычно означает серьёзную проблему, которую программа не может обработать, например, нехватку памяти. Exception — это исключительная ситуация, которую можно предвидеть и обработать, например, деление на ноль. Ошибки (Error) часто фатальны и не должны перехватываться, а исключения (Exception) предназначены для обработки через try-catch. Разделение помогает писать надёжный код, где фатальные сбои останавливают программу, а ожидаемые проблемы обрабатываются.

Длинный ответ

В программировании термины Error и Exception часто используются для обозначения разных типов нештатных ситуаций. Понимание их различий критично для написания устойчивого кода, который правильно реагирует на сбои.

Что такое Error?

Error (ошибка) обычно представляет собой серьёзную проблему, возникающую на уровне системы или виртуальной машины, которую приложение не должно пытаться обрабатывать. Это фатальные условия, такие как нехватка памяти (OutOfMemoryError), переполнение стека (StackOverflowError) или ошибки загрузки класса (ClassFormatError). В языках вроде Java Error является подклассом Throwable, но не Exception. Программа, как правило, не должна ловить Error, потому что они сигнализируют о глубоких проблемах, после которых продолжение работы может быть небезопасным.

Что такое Exception?

Exception (исключение) — это событие, которое нарушает нормальный поток выполнения программы, но которое можно предвидеть и обработать. Исключения делятся на проверяемые (checked) и непроверяемые (unchecked/runtime). Например, FileNotFoundException (проверяемое) или NullPointerException (непроверяемое). Они наследуются от Exception в Java. Разработчик должен использовать блоки try-catch для обработки исключений и восстановления работы программы или корректного завершения операции.

Пример кода на Java

public class ErrorVsException {
    public static void main(String[] args) {
        // Пример обработки Exception
        try {
            int result = 10 / 0; // Вызовет ArithmeticException
        } catch (ArithmeticException e) {
            System.out.println("Поймано исключение: " + e.getMessage());
        }
        
        // Error обычно не перехватывают, но технически можно
        try {
            вызываемStackOverflow(); // Может вызвать StackOverflowError
        } catch (StackOverflowError e) {
            // Не рекомендуется!
            System.out.println("Поймана ошибка, но продолжать небезопасно");
        }
    }
    
    static void вызываемStackOverflow() {
        вызываемStackOverflow(); // Бесконечная рекурсия
    }
}

Где применяется это различие?

Разделение на Error и Exception используется в языках с исключениями, таких как Java, C#, Python (хотя там чёткое разделение менее строгое). Оно помогает:

  • Чётко разделять фатальные системные сбои (Error) и логические ошибки программы (Exception).
  • Применять разные стратегии обработки: исключения обрабатываются в бизнес-логике, а ошибки часто приводят к аварийной остановке.
  • Писать более надёжный код, где обработка исключений не маскирует критические проблемы.

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • Java

    Java

Ключевые слова

#Error

#Exception

#try catch

#throw

#runtime error

Подпишись на Java Developer в телеграм