try { // Codi que pot generar un error let result = 10 / 0; // Divisió per zero } catch (error) { console.error(`Error: ${error.message}`); }
try { // Codi que pot generar un error let result = 10 / 0; // Divisió per zero } catch (error) { console.error(`Error: ${error.message}`); } finally { console.log('La clàusula finally sempre s\'executarà.'); }
try { // Codi que pot generar un error let numerator = 10; let denominator = 0; let result = numerator / denominator; // Divisió per zero } catch (error) { console.error(`Error: ${error.message}`); console.error(`Error Stack Trace: ${error.stack}`); console.error(`Error Name: ${error.name}`); console.error(`Error Cause: ${error.cause || 'No cause available'}`); } finally { console.log('La clàusula finally sempre s\'executarà.'); }
try
:
try
és on es pot generar un error. En aquest cas, s'està intentant dividir 10 per 0, la qual cosa provoca una "Divisió per zero". Si es produeix un error dins d'aquest bloc, el control es transferirà immediatament a la clàusula catch
.catch
:
catch
s'executa quan es produeix un error dins del bloc try
. Aquesta clàusula rep un paràmetre error
, que és l'objecte que representa l'error que es va produir. Aquí es mostren diverses propietats de l'objecte error
:
error.message
: Conté el missatge d'error.error.stack
: Conté la pila de trucades (stack trace) que mostra com es va arribar a l'error.error.name
: El tipus d'error (en aquest cas, seria "TypeError" o "ZeroDivisionError").error.cause
: Algunes vegades els errors poden tenir una causa associada; aquí es mostra aquesta causa si està disponible o "No hi ha cap causa disponible" si no n'hi ha cap.finally
:
finally
s'executa sempre, ja sigui que es produeixi un error o no. En aquest cas, simplement mostra un missatge per indicar que la clàusula finally
s'està executant.