Какие свойства есть у объекта ошибки?

👨‍💻 Frontend Developer 🟡 Часто попадается 🎚️ Средний
#JavaScript #База JS

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

Объект ошибки в JavaScript имеет несколько стандартных свойств, которые помогают идентифицировать и отлаживать ошибки. Основные свойства: name (тип ошибки), message (сообщение об ошибке) и stack (стек вызовов). Эти свойства позволяют эффективно обрабатывать, логировать и анализировать ошибки в приложениях.

Основные свойства:

  • name — тип ошибки (например, “Error”, “TypeError”)
  • message — текстовое сообщение об ошибке
  • stack — стек вызовов на момент возникновения ошибки

Полный ответ

Объект ошибки в JavaScript — это специальный объект, который создается при возникновении исключения. Он содержит информацию, необходимую для идентификации, отладки и обработки ошибок. Понимание свойств объекта ошибки критически важно для эффективной обработки исключений.

Основные свойства объекта ошибки

1. name

Свойство name содержит строку с типом ошибки:

try {
  throw new Error('Тестовая ошибка');
} catch (error) {
  console.log(error.name); // "Error"
}

2. message

Свойство message содержит текстовое описание ошибки:

try {
  throw new Error('Что-то пошло не так');
} catch (error) {
  console.log(error.message); // "Что-то пошло не так"
}

3. stack

Свойство stack содержит информацию о стеке вызовов:

try {
  throw new Error('Ошибка с трассировкой');
} catch (error) {
  console.log(error.stack); // Стек вызовов
}

Типы ошибок и их свойства

JavaScript предоставляет различные типы ошибок, каждый со своим именем:

  • Error — базовый тип ошибки
  • SyntaxError — синтаксическая ошибка
  • ReferenceError — ошибка ссылки
  • TypeError — ошибка типа
  • RangeError — ошибка диапазона
  • URIError — ошибка URI
  • EvalError — ошибка в eval()

Работа со свойствами ошибки

Получение информации об ошибке

function handleError(error) {
  console.log(`Тип: ${error.name}`);
  console.log(`Сообщение: ${error.message}`);
  console.log(`Стек: ${error.stack}`);
}

Проверка типа ошибки

try {
  // ... код, который может вызвать ошибку
} catch (error) {
  if (error instanceof TypeError) {
    console.log('Ошибка типа:', error.message);
  } else if (error instanceof ReferenceError) {
    console.log('Ошибка ссылки:', error.message);
  }
}

Практические примеры

Логирование ошибок

Свойства ошибки полезны для логирования:

function logError(error) {
  const errorInfo = {
    type: error.name,
    message: error.message,
    stack: error.stack,
    timestamp: new Date().toISOString()
  };
  
  console.error('Произошла ошибка:', errorInfo);
}

Создание кастомных ошибок

Можно создавать ошибки с дополнительными свойствами:

class CustomError extends Error {
  constructor(message, code) {
    super(message);
    this.name = 'CustomError';
    this.code = code; // Дополнительное свойство
  }
}
 
const error = new CustomError('Пользовательская ошибка', 'ERR_001');
console.log(error.code); // "ERR_001"

Распространенные ошибки и решения

Неправильная проверка типа ошибки

// ❌ Неправильно
if (error.name === 'TypeError') {
  // ...
}
 
// ✅ Правильно
if (error instanceof TypeError) {
  // ...
}

Игнорирование стека вызовов

Свойство stack критически важно для отладки, его не следует игнорировать.

Лучшие практики

  1. Всегда проверяйте тип ошибки — используйте instanceof
  2. Логируйте все свойства ошибки — для эффективной отладки
  3. Создавайте кастомные ошибки — для специфичных случаев
  4. Не игнорируйте стек вызовов — он помогает находить источник ошибки
  5. Используйте понятные сообщения — message должен быть информативным

Ключевые преимущества знания свойств ошибки

  1. Эффективная отладка — стек вызовов показывает путь ошибки
  2. Правильная обработка — различие типов ошибок позволяет реагировать по-разному
  3. Лучшее логирование — полная информация об ошибке
  4. Улучшенный UX — возможность показывать пользователю понятные сообщения

Понимание свойств объекта ошибки — основа эффективной обработки исключений в JavaScript. Эти знания помогают создавать более надежные и отлаживаемые приложения.


Задача для проверки знаний

Задача

Какие свойства будут у объекта ошибки в этом примере и что они будут содержать?

try {
  const obj = null;
  console.log(obj.property);
} catch (error) {
  // Какие будут значения у error.name, error.message, error.stack?
}
Посмотреть ответ

Ответ: У объекта ошибки будут следующие свойства:

  1. error.name — “TypeError” Ошибка возникает при попытке доступа к свойству null

  2. error.message — “Cannot read property ‘property’ of null” (точный текст может отличаться в зависимости от браузера)

  3. error.stack — Стек вызовов, показывающий путь к ошибке Содержит информацию о том, в какой строке и файле произошла ошибка

Объяснение:

  • TypeError возникает при попытке выполнить операцию с переменной неподходящего типа
  • В данном случае мы пытаемся получить свойство у null, что невозможно
  • Стек вызовов показывает точное место возникновения ошибки, что помогает в отладке

Понимание этих свойств позволяет:

  • Правильно идентифицировать тип ошибки
  • Показать пользователю соответствующее сообщение
  • Залогировать ошибку с полной информацией для последующей отладки

Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪