Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: try catch, throw, Error object, exception handling, finally block

Что такое исключения в JavaScript и как с ними работать?

Этот вопрос проверяет понимание механизма обработки ошибок в JavaScript с помощью исключений, что необходимо для создания устойчивого к сбоям кода.

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

Исключения в JavaScript — это механизм обработки ошибок, который позволяет прервать нормальное выполнение программы при возникновении проблемы и передать управление специальному обработчику. Для обработки исключений используется конструкция try...catch: код, который может вызвать ошибку, помещается в блок try, а код для её обработки — в блок catch. Можно генерировать собственные исключения с помощью оператора throw, передавая ему любой объект, но обычно это экземпляр Error. Блок finally выполняется всегда, независимо от того, было исключение или нет, и используется для очистки ресурсов.

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

Исключения в JavaScript — это специальные объекты, которые сигнализируют о возникновении ошибки во время выполнения программы. Когда возникает исключение, нормальный поток выполнения прерывается, и JavaScript ищет ближайший обработчик исключений (блок catch). Если обработчик не найден, программа завершается с ошибкой, что может быть критично для пользовательского опыта. Поэтому грамотная обработка исключений — ключ к созданию надёжных приложений.

Базовый синтаксис try...catch...finally

Основной инструмент для работы с исключениями — конструкция try...catch...finally.

try {
  // Код, который может выбросить исключение
  const data = JSON.parse(invalidJsonString);
} catch (error) {
  // Обработка ошибки
  console.error('Ошибка парсинга JSON:', error.message);
} finally {
  // Этот блок выполнится всегда
  console.log('Операция завершена.');
}

Создание собственных исключений

Вы можете генерировать исключения самостоятельно с помощью оператора throw. Хотя можно бросить любое значение (строку, число), рекомендуется использовать встроенные или собственные классы ошибок, наследуясь от Error.

function divide(a, b) {
  if (b === 0) {
    throw new Error('Деление на ноль невозможно.');
  }
  return a / b;
}

try {
  const result = divide(10, 0);
} catch (err) {
  console.log(err.message); // "Деление на ноль невозможно."
}

Типы встроенных ошибок

JavaScript предоставляет несколько встроенных типов ошибок для конкретных случаев:

  • SyntaxError — синтаксическая ошибка.
  • TypeError — операция применена к значению неверного типа.
  • ReferenceError — ссылка на несуществующую переменную.
  • RangeError — значение вне допустимого диапазона.
  • URIError — ошибка в функциях работы с URI.

Использование конкретных типов помогает точнее диагностировать проблемы.

Где и как применять обработку исключений

Исключения следует использовать для обработки непредвиденных, но возможных ошибок выполнения, таких как:

  • Сетевая ошибка при запросе к API.
  • Ошибка парсинга данных (например, некорректный JSON).
  • Ошибки ввода пользователя, которые нельзя проверить статически.

Важно не злоупотреблять исключениями для управления обычной логикой программы — это антипаттерн. Используйте условные операторы для ожидаемых ветвлений.

Вывод: Механизм исключений в JavaScript — это мощный инструмент для обработки ошибок времени выполнения. Его стоит применять для изоляции и обработки непредсказуемых сбоев, чтобы предотвратить аварийное завершение программы и предоставить пользователю понятное сообщение об ошибке. Всегда используйте блок finally для освобождения ресурсов (например, закрытия файловых дескрипторов или соединений).

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

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

#try catch

#throw

#Error object

#exception handling

#finally block

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