Wyjątek wędruje w górę wywołań
Wyjątki i walidacja - JavaScript od podstaw: konsola (JavaScript)
Błąd rzucony głęboko w funkcjach nie musi być łapany od razu. Jeśli funkcja nie ma `try`, wyjątek przerywa ją i wędruje do funkcji, która ją wywołała, aż trafi na `catch`. Dzięki temu `readOrder` i `readLine` nie zajmują się błędami w ogóle, a obsługa jest w jednym miejscu. Zauważ, że linia `Wiersz ... gotowy` po błędzie się nie wypisuje.
function readNumber(text) {
const n = Number(text);
if (text === '' || Number.isNaN(n)) throw new Error(`"${text}" to nie liczba`);
return n;
}
function readLine(line) {
const [name, qty, price] = line.split(';');
const value = readNumber(qty) * readNumber(price);
console.log(`Wiersz ${name} gotowy`);
return value;
}
function readOrder(lines) {
let total = 0;
for (const line of lines) total += readLine(line);
return total;
}
const orders = [
['zeszyt;2;4.5', 'pióro;1;12'],
['zeszyt;2;4.5', 'pióro;jeden;12', 'linijka;1;3'],
];
for (const order of orders) {
try {
console.log('Razem:', readOrder(order));
} catch (e) {
console.log('Zamówienie odrzucone:', e.message);
}
}Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu JavaScript od podstaw: konsola·Zaloguj się, aby zapisać postęp na koncie.