Salt la conținutul principal
Modulul 5 · Lecția 4 din 420/32 în curs~12 min
Lecții din modul (4/4)

încerca / prinde / aruncă

O eroare în JavaScript este o valoare (de obicei un obiect Error) care întrerupe fluxul normal și face baloane în stiva de apeluri până când cineva îl prinde. Construcția pentru a gestiona acest caz este try / catch.

Se afișează o eroare: throw

JS
function dividi(a, b) {
  if (b === 0) {
    throw new Error('Divisione per zero');
  }
  return a / b;
}

throw întrerupe imediat funcția curentă.

Prinde: try / catch

JS
try {
  const r = dividi(10, 0);
  console.log('ok', r);
} catch (err) {
  console.log('errore:', err.message); // 'errore: Divisione per zero'
}

// Il programma continua qui, anche se c'è stato un errore.

Tot ce este în interiorul try este executat; dacă se produce o eroare (prin throw sau prin orice operațiune care eșuează), controlul sare la blocul catch. Variabila după catch (...) primește eroarea.

finally (opțional)

Cod care rulează întotdeauna, eroare sau nu. Util pentru închiderea resurselor:

JS
try {
  // ... operazione rischiosa
} catch (err) {
  // ... log
} finally {
  // ... pulizia (sempre eseguita)
}

Când să-l folosești (și când nu)

  • Da: operațiuni I/O (JSON.parse pe intrare neîncrezătoare, fetch, acces la disc), conversii care poate eșua.
  • Poate nu: pentru debitul normal. Dacă știți că o intrare poate fi invalidă, este mai bine să o verificați cu un if decât să arunce și să prindă.
JS
// Tipico: parsing JSON difensivo
function parseJsonSafe(text) {
  try {
    return { ok: true, value: JSON.parse(text) };
  } catch (err) {
    return { ok: false, error: err.message };
  }
}

parseJsonSafe('{"a":1}'); // { ok: true, value: {a:1} }
parseJsonSafe('non json'); // { ok: false, error: '...' }

Încearcă

Exercițiu#js.m5.l4.e1
Încercări: 0Se încarcă…

Definiți „safeDivide(a, b)”: dacă b este 0, trimiteți o eroare cu mesajul „Divisione per zero”, în caz contrar returnați a/b.

Se încarcă editorul...
Afișează indiciu

if (b === 0) throw new Error('...'); apoi returnați a/b.

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#js.m5.l4.e2
Încercări: 0Se încarcă…

Definiți `parseJsonSafe(text)`: dacă textul este valid JSON return { ok: true, value: <object> }, altfel { ok: false }. Utilizați try/catch pe JSON.parse.

Se încarcă editorul...
Afișează indiciu

Wrap JSON.parse în try; în catch return { ok: false }.

Soluție disponibilă după 3 încercări