⊗jsSpACEx 158 of 294 menu

Exceções em callbacks assíncronos em JavaScript

Suponha que, se um número de um elemento de array inexistente for passado como parâmetro make - esta é uma situação excepcional. Como você já sabe, exceções lançadas dentro de uma função assíncrona não podem ser capturadas por try-catch. No nosso caso, a exceção lançada dentro de make ou do callback não será capturada:

try { make(10, function(res) { console.log(res); }); } catch(err) { // não será capturado }

Na abordagem de callback, trabalha-se com exceções da seguinte forma: o primeiro parâmetro do callback recebe o resultado, e o segundo - o erro. Neste caso, o tratamento de erros ocorre da seguinte maneira:

make(10, function(res, err) { if (!err) { console.log(res); // nenhum erro ocorreu, vamos exibir o resultado } else { console.log(err); // um erro ocorreu, vamos exibir seu texto } });

Vamos modificar o código da nossa função make de acordo com o descrito:

function make(num, callback) { setTimeout(function() { let arr = [1, 2, 3, 4, 5]; let err; if (arr[num] === undefined) { err = 'elem not exists'; // texto do erro } else { err = null; // nenhum erro } callback(arr[num], err); }, 3000); }
Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar