Использование и улавливание RangeError в javascript
Я собираюсь бросить исключение с помощью RangeError и хотел проверить, что я использую его правильно и как его лучше всего поймать.
У меня есть функция, которая может бросить RangeError или TypeError, как это
function saveNumber(val) {
// Only accept numbers.
if (typeof val !== 'number') {
throw new TypeError();
}
// Error if the number is outside of the range.
if (val > max || val < min) {
throw new RangeError();
}
db.save(val);
}
Я хотел бы назвать это и иметь дело только с RangeError. Как лучше всего это сделать?
3 ответов
try {
saveNumber(...);
} catch (e) {
if (e instanceof TypeError) {
// ignore TypeError
}
else if(e instanceof RangeError) {
// handle RangeError
}
else {
// something else
}
}
прямо из документация MDN по try-catch:
try {
saveNumber(...);
} catch (e if e is instanceof RangeError) {
// Do something
} catch (e) {
// re-throw whatever you don't want to handle
throw e;
}
чуть более элегантный ответ:
switch (error.constructor) {
case NotAllowedError:
return res.send(400);
case NotFoundError:
return res.send(404);
default:
return res.send(500);
}