try catch 仅能捕获同步运行时错误,如 throw、ReferenceError、TypeError、JSON.parse 失败等;无法捕获异步错误、语法错误、未处理 Promise rejection 和全局资源错误,需配合 unhandledrejection、error 事件及 async/await catch 等机制完善错误处理。

try catch 主要捕获同步执行中抛出的异常,无法捕获异步错误、语法错误、Promise 拒绝(未处理的 rejection)和全局错误(如未捕获的 promise rejection 或 script error)。 完善 JavaScript 错误处理不能只靠 try catch,需分场景组合使用多种机制。
仅限当前执行栈中同步抛出的运行时错误,例如:
throw new Error('xxx')ReferenceError)TypeError)arr[0].toString() 中 arr 为 null)SyntaxError)注意:语法错误(如缺少括号、错写 const)在代码加载/解析阶段就报错,根本不会进入 try catch 执行流程,因此无法捕获。
以下常见错误类型不会进入 catch 块:
立即学习“Java免费学习笔记(深入)”;
setTimeout(() => { throw 'boom' }, 0) —— 运行在新执行上下文中Promise.reject('fail') 且没接 .catch() 或 await
btn.addEventListener('click', () => { badFunc(); })
<script src="404.js"></script> 触发的 error 事件覆盖更多错误场景,建议按优先级补充:
unhandledrejection 事件window.addEventListener('unhandledrejection', e => { console.error('Promise rejected:', e.reason); });
error 事件捕获未被捕获的运行时错误window.addEventListener('error', e => { console.error('Global error:', e.error); });
setTimeout、setInterval、事件回调等包裹 try catch(虽不推荐层层嵌套,但关键路径可加)await 后的操作都应有 try/catch 或链式 .catch()
不要把 try catch 当万能胶水。重点放在:
以上就是javascript错误处理如何完善_try catch能捕获哪些异常的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号