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/”