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.