JavaScript错误处理与调试需构建多层防线:主动校验+try...catch捕获同步异常+async/await或.catch()处理异步错误+throw自定义错误+console与DevTools深度调试+window.onerror和unhandledrejection全局兜底。
JavaScript 错误处理与调试的核心是主动捕获异常 + 精准定位问题 + 合理反馈信息。光靠控制台报错不够,得让代码自己“说话”,同时让开发者能快速看清发生了什么。
不是所有错误都能提前发现,比如网络请求失败、JSON 解析出错、用户输入非法值。try...catch 是最常用的同步错误拦截手段。
err)包含错误类型、消息、堆栈等关键信息,别只打印 err.message,至少加上 err.stack
try...catch 对 setTimeout 或普通 Promise 链无效,需配合 .catch() 或 async/await + try...catch不要等系统抛错才响应。在业务逻辑中主动检查条件,用 throw new Error('...') 中断流程并给出明确提示。
Cannot read property 'x' of null 更友好Error 创建业务错误类(如 class ValidationError extends Error),方便后续按类型区分处理console 不只是 console.log,它是轻量但高效的调试入口;DevTools 则是深度分析的主战场。
console.table() 查看对象/数组结构,console.group() 分组日志,console.time() 测性能debugger 语句,运行时会自动断在那一行(需开启浏览器调试器)用户遇到的很多错误不会走到你的 try 块里,比如未捕获的 Promise 拒绝、全局脚本语法错误、资源加载失败。
window.onerror 捕获全局 JS 错误(注意它不抓 Promise reject)win
dow.addEventListener('unhandledrejection', ...) 捕获未处理的 Promise 错误基本上就这些。错误处理不是加一堆 try…catch,而是建立一层层防线:预防性校验、运行时捕获、可视化调试、线上兜底。调试也不只是看红字,关键是让每一步执行都“可观察、可暂停、可验证”。