Их уже вопрос по этой теме
Оптимальная практика обработки исключений Node.js
который устарел, а ответы очень устарели, domains
с тех пор даже устарели.
Теперь в сценарии Post Async/Await Node.js мы не должны рассматривать синхронные и асинхронные случаи аналогичным образом и генерировать исключения в функциях синхронизации и отклонять обещания в асинхронных функциях вместо возврата экземпляра Error
в первом случае.
let divideSync = function(x,y) {
// if error condition?
if ( y === 0 ) {
// "throw" the error
throw new Error("Can't divide by zero exception")
}
else {
// no error occured, continue on
return x/y
}
}
Моделирование асинхронной операции деления
let divideAsync = function(x, y) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
// if error condition?
if (y === 0) {
// "throw" the error safely by rejecting the promise
reject (new Error("Can't divide by zero exception"));
} else {
// no error occured, continue on
resolve(x / y)
}
}, 1000);
})
};
Таким образом, синхронные и асинхронные исключения могут обрабатываться единообразно.
let main = async function () {
try {
//const resultSync = divideSync(4,0);
const resultAsync = await divideAsync(4,0);
}
catch(ex) {
console.log(ex.message);
}
}