try / catch în JavaScript

Structuri de control și funcții Toate browserele, Node.js

Prinde erorile, ca programul să nu se oprească și să poți afișa un mesaj clar.

Sintaxă
try { ... } catch (eroare) { ... } finally { ... }

Ce face try / catch

Codul din try rulează normal. Dacă apare o eroare, execuția sare imediat în catch, care primește obiectul erorii. Mesajul erorii este în eroare.message.

Blocul finally este opțional și rulează mereu, cu sau fără eroare. Cu throw îți arunci propriile erori.

Exemple

Exemplul 1: Prinderea unui JSON invalid

try {
  const date = JSON.parse("{nume: Ana}");
  console.log(date);
} catch (eroare) {
  console.log("JSON invalid:", eroare.name);
}
console.log("Programul continuă.");

Rezultat

JSON invalid: SyntaxError
Programul continuă.

Exemplul 2: Erori proprii cu throw și finally

function retrage(sold, suma) {
  if (suma > sold) {
    throw new Error("Fonduri insuficiente");
  }
  return sold - suma;
}

try {
  console.log(retrage(100, 30));
  console.log(retrage(100, 300));
} catch (eroare) {
  console.log("Eroare: " + eroare.message);
} finally {
  console.log("Operațiune încheiată");
}

Rezultat

70
Eroare: Fonduri insuficiente
Operațiune încheiată

Greșeli frecvente

  • Pui un catch gol, care ascunde eroarea. Măcar afișeaz-o cu console.error(eroare), altfel nu vei ști de ce nu merge ceva.
  • Aștepți ca try să prindă erorile dintr-un setTimeout sau dintr-o promisiune fără await. Ele apar mai târziu, după ce blocul try s-a terminat.

Comenzi înrudite

  • JSON.parse: Transformă un text JSON într-un obiect sau tablou JavaScript.
  • async / await: Scrie cod asincron care se citește ca un cod obișnuit, de sus în jos.
  • fetch: Trimite o cerere HTTP la un server și primește răspunsul, fără reîncărcarea paginii.