Як створити помилку вручну?
Коротка відповідь
Щоб створити помилку вручну, напиши:
javascriptthrow new Error("Повідомлення про помилку");
Як це працює
new Error("текст")- створює об'єкт помилки.throw- викидає (генерує) це виключення.- JS перериває виконання поточного блока і шукає найближчий
try...catch. - Якщо обробник знайдено - помилка туди "потрапляє". Якщо ні - програма падає з повідомленням про помилку.
Приклад 1. Просте створення помилки
javascript
try {
throw new Error("Щось пішло не так!");
} catch (err) {
console.log("Спіймано:", err.message);
}Вивід:
javascript
Спіймано: Щось пішло не так!Приклад 2. Перевірка даних
Частий сценарій - валідація вхідних параметрів:
javascript
function divide(a, b) {
if (typeof a !== "number" || typeof b !== "number") {
throw new TypeError("Аргументи повинні бути числами!");
}
if (b === 0) {
throw new Error("Ділення на нуль неможливе!");
}
return a / b;
}
try {
console.log(divide(10, 0));
} catch (e) {
console.log("Помилка:", e.message);
}Вивід:
javascript
Помилка: Ділення на нуль неможливе!Приклад 3. Використання різних типів помилок
Можна викидати не тільки Error, а й його нащадків:
javascript
throw new TypeError("Невірний тип");
throw new RangeError("Вихід за межі діапазону");
throw new ReferenceError("Невизначена змінна");Усі вони створюються так само, через new ...Error("повідомлення").
Приклад 4. Своя (кастомна) помилка
Можна створити власний тип помилки, успадкувавши його від Error:
javascript
class ValidationError extends Error {
constructor(message) {
super(message);
this.name = "ValidationError";
}
}
function validateUser(user) {
if (!user.name) {
throw new ValidationError("Ім'я обов'язкове!");
}
}
try {
validateUser({});
} catch (e) {
console.log(`${e.name}: ${e.message}`);
}Вивід:
javascript
ValidationError: Ім'я обов'язкове!Приклад 5. Викидати можна не тільки Error (але краще не варто)
javascript
throw "Довільний рядок";
throw 404;
throw { message: "Помилка", code: 123 };Однак так робити не рекомендується - це ламає стандартний формат помилок і робить код менш передбачуваним.
Краще завжди використовувати:
javascript
throw new Error("Повідомлення");Приклад 6. Помилка без try...catch
Якщо throw використовується без обробки - програма зупиняється:
javascript
throw new Error("Критична помилка!");
console.log("Цей код не виконається");Вивід:
javascript
Uncaught Error: Критична помилка!Підсумок
| Що використовуємо | Призначення |
|---|---|
throw | Викидає виключення |
Error | Базовий клас помилок |
TypeError, RangeError, ReferenceError | Спеціалізовані типи помилок |
try...catch | Обробляє помилку |
class CustomError extends Error | Створення власних помилок |
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.