Lỗi đồng bộ dùng try/catch/finally, và bạn nên throw các object Error (không phải chuỗi) để có được stack trace.
js
{
data = .(input);
} (err) {
(err ) (err);
err;
} {
();
}
Lỗi đồng bộ dùng try/catch/finally, và bạn nên throw các object Error (không phải chuỗi) để có được stack trace.
{
data = .(input);
} (err) {
(err ) (err);
err;
} {
();
}
// async/await → bọc các await trong try/catch
async function load() {
try {
return await fetch(url).then(r => r.json());
} catch (err) { showError(err); }
}
// promise → dùng .catch
fetch(url).then(use).catch(showError);
try {
setTimeout(() => { throw new Error("boom"); }, 0); // ❌ KHÔNG bị bắt
} catch (e) { /* không bao giờ chạy — throw xảy ra sau, ngoài stack này */ }
Callback của setTimeout chạy ở một tick sau, nên khối try bao quanh đã biến mất từ lâu. Hãy xử lý lỗi bên trong callback.
window.addEventListener("unhandledrejection", e => log(e.reason)); // trình duyệt
process.on("unhandledRejection", err => log(err)); // Node
Error (hoặc các lớp con tùy chỉnh) để có stack trace và kiểm tra instanceof.catch (e) {}). Luôn log hoặc ném lại.