Рубрики
Без рубрики

Пользовательские ошибки в JavaScript

JavaScript предоставляет нам набор из 8 объектов ошибок, которые возникают в выражении try/catch в зависимости от типа ошибки. Это: Ошибка, ошибка оценки, ошибка диапазона, ошибка ссылки, ошибка синтаксиса, ошибка типа, ошибка адреса Я проанализировал их все в учебнике по ошибкам JavaScript. Здесь я хочу объяснить, как создавать собственные пользовательские ошибки, расширяя базовый класс ошибок: класс OutOfFuelError расширяет ошибку {} класс FlatTireError расширяет ошибку {} Пользовательские ошибки позволяют вести себя по-разному в зависимости от конкретного типа ошибки, не прибегая к использованию сообщений об ошибках для понимания вида ошибки.

JavaScript предоставляет нам набор из 8 объектов ошибок, которые возникают в выражении try/catch в зависимости от типа ошибки. Они являются:

  • Ошибка
  • Ошибка оценки
  • Ошибка дальности действия
  • Ошибка ссылки
  • Синтаксическая ошибка
  • Ошибка типа
  • Ошибка Url-адреса

Я проанализировал их все в учебнике по ошибкам JavaScript.

Здесь я хочу объяснить, как создавать собственные пользовательские ошибки, расширяя базовый класс ошибок:

class OutOfFuelError extends Error {}

class FlatTireError extends Error {}

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

try {
  //some code
} catch (err) {
  if (err instanceof OutOfFuelError) {
    //handle error
  } else if (err instanceof FlatTireError) {
    //handle error
  }
}

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

try {
  const car = new Car() //imagine we have a Car object

  if (!car.fuel) {
    throw new OutOfFuelError('No fuel!')
  }
  if (car.flatTire) {
    throw new FlatTireError('Flat tire!')
  }
} catch (err) {
  if (err instanceof OutOfFuelError) {
    //handle error
  } else if (err instanceof FlatTireError) {
    //handle error
  }
}

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

class OutOfFuelError extends Error {
  constructor(message) {
    super(message)
    this.name = "OutOfFuelError"
  } 
}

Оригинал: “https://flaviocopes.com/javascript-custom-errors/”