Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: errors

В чем разница выводов – throw 'message' и throw new Error('message')?

Вопрос проверяет понимание обработки ошибок в JavaScript.

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

  • throw 'message' — выбрасывает строку, но без стека вызовов и деталей ошибки.

  • throw new Error('message') — создает объект ошибки с stack, name и другими свойствами, что упрощает отладку.

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

  1. throw 'message' (Примитив)

try {
	throw 'Произошла ошибка';  
} catch (error) {
	console.log(error); // "Произошла ошибка" (просто строка)  
}  

Проблемы:

  • Нет стека вызовов (error.stack).

  • Нет стандартных свойств (name, message).

  • Сложнее анализировать в логах.

  1. throw new Error('message') (Объект ошибки)

try {
	throw new Error('Серьезная ошибка');  
} catch (error) {
	console.log(error.message); // "Серьезная ошибка"  
	console.log(error.stack); // Стек вызовов для отладки  
}  

Преимущества:

  • Есть name (например, Error, TypeError).

  • Есть stack — можно увидеть, где произошла ошибка.

  • Можно создавать кастомные классы ошибок (class MyError extends Error).

Когда что использовать?

  • Всегда лучше new Error(), если нужна отладка.

  • throw 'message' можно использовать для простых случаев, но это не рекомендуется.

Пример кастомной ошибки:

class ValidationError extends Error {
	constructor(message) {
		super(message);  
		this.name = 'ValidationError';  
	}  
}  
throw new ValidationError('Неверные данные');  

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

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

#errors

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