⊗jsSpACEx 158 of 294 menu

Eccezioni nelle callback asincrone in JavaScript

Supponiamo che se a make viene passato il numero di un elemento inesistente dell'array - questa sia una situazione eccezionale. Come già sapete, le eccezioni sorte all'interno di una funzione asincrona non possono essere catturate con try-catch. Nel nostro caso l'eccezione, sorta all'interno di make o della callback, non verrà catturata:

try { make(10, function(res) { console.log(res); }); } catch(err) { // non verrà catturata }

Nell'approccio con le callback, si lavora con le eccezioni nel modo seguente: nel primo parametro della callback si invia il risultato, e nel secondo - l'errore. In questo caso la gestione degli errori avviene nel modo seguente:

make(10, function(res, err) { if (!err) { console.log(res); // nessun errore, stampiamo il risultato } else { console.log(err); // si è verificato un errore, stampiamo il suo testo } });

Modifichiamo il codice della nostra funzione make in conformità con quanto descritto:

function make(num, callback) { setTimeout(function() { let arr = [1, 2, 3, 4, 5]; let err; if (arr[num] === undefined) { err = 'elem not exists'; // testo dell'errore } else { err = null; // nessun errore } callback(arr[num], err); }, 3000); }
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta