Изузeци у асинхроним колбековима у ЈаваСкрипту
Нека је, ако је параметром make прослеђен
број непостојећег елемента низа -
то изузетна ситуација. Као што већ знате,
изузеци који настану унутар асинхроне
функције не могу бити ухваћени преко try-catch.
У нашем случају изузетак, настао унутар
make или колбека, неће бити ухваћен:
try {
make(10, function(res) {
console.log(res);
});
} catch(err) {
// неће бити ухваћен
}
У колбек приступу са изузецима се ради на следећи начин: у први параметар колбека шаље се резултат, а у други - грешка. У том случају обрада грешака се врши на следећи начин:
make(10, function(res, err) {
if (!err) {
console.log(res); // грешка није настала, исписаћемо резултат
} else {
console.log(err); // грешка је настала, исписаћемо њен текст
}
});
Хајде да прерадимо код наше функције
make у складу са описаном праксом:
function make(num, callback) {
setTimeout(function() {
let arr = [1, 2, 3, 4, 5];
let err;
if (arr[num] === undefined) {
err = 'elem not exists'; // текст грешке
} else {
err = null; // нема грешке
}
callback(arr[num], err);
}, 3000);
}