Cho đoạn code như sau:
async function main() {
acb(); await waitNextCycle(); console.log(2);
}
function waitNextCycle() {
return Promise.resolve();
}
async function acb() {
await waitNextCycle(); console.log(1); throw new Error(5);
}
process.on('uncaughtException', function (err) {
console.log('error'); console.error(err); process.exit(-1);
});
process.on('unhandledRejection', (err) => {
console.log('reject'); console.error(err); process.exit(-2);
});
main();
Khi chạy đến throw new Error(5); mình kì vọng nó sẽ ngay lập tức nhảy vào event unhandledRejection và tắt chương trình.
Nhưng không, chương trình vẫn chạy tiếp từ chỗ console.log(2);, sau khi chạy hết hàm main, rồi chạy đến hết file, event unhandledRejection mới được chạy??
Vậy có cách nào để mình throw một phát là dừng chương trình luôn được không? (Mình không muốn để process.exit ngay chỗ throw đâu)
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?