JavaScript:
Gestione degli errori
Come fare:
Ecco il classico blocco try-catch:
try {
// Codice che potrebbe generare un errore
let result = potentiallyRiskyOperation();
console.log('Successo:', result);
} catch (error) {
// Cosa fare se viene generato un errore
console.error('Ops:', error.message);
}Esempio di output quando non si verifica alcun errore:
Successo: 42E quando si verifica un errore:
Ops: Qualcosa è andato stortoPer il codice asincrono, dove sono coinvolti i promise, utilizza try-catch in una funzione async:
async function fetchData() {
try {
let data = await fetch('https://api.example.com/data');
console.log('Dati recuperati:', data);
} catch (error) {
console.error('Errore nel recupero dati:', error.message);
}
}
fetchData();Approfondimento
La gestione degli errori in JavaScript è evoluta. Ai vecchi tempi (ES3, circa 1999), avevamo solo il blocco try-catch. Non era super flessibile, ma faceva il suo lavoro.
ES6 (2015) ha introdotto i Promise e ci ha dato .then() e .catch(), permettendoci di gestire gli errori asincroni in modo più elegante.
fetch('https://api.example.com/data')
.then(data => console.log('Dati recuperati:', data))
.catch(error => console.error('Errore nel recupero dati:', error.message));Per quanto riguarda i dettagli di implementazione, quando viene lanciato un errore, i motori JavaScript creano un oggetto Error con proprietà utili come message e stack. È inoltre possibile creare tipi di errori personalizzati estendendo la classe Error – comodo per applicazioni più complesse.
Alternative? Potresti ignorare la gestione degli errori (pessima idea), utilizzare callback con parametri che prevedono l’errore per primo (ciao, stile Node.js), o sperimentare con librerie e framework che offrono le loro soluzioni.
Vedi anche
Per saperne di più sulla gestione degli errori:
- MDN su try-catch: MDN try…catch
- Async/Await: MDN funzione async
- Una guida ai Promise: MDN Promises
- Creazione e lancio di errori personalizzati: MDN Error