JavaScript错误捕获主要靠try...catch,需try块包裹可能出错代码,catch接收Error实例处理,finally无论成败均执行用于清理;它仅捕获同步错误和throw异常,异步错误需在回调或Promise中单独处理。
JavaScript 中的错误捕获主要靠 try...catch 语句,它能让你在代码出错时不直接崩溃,而是有机会处理异常、记录日志或给用户友好提示。
必须有 try 块包裹可能出错的代码,catch 块接收错误对象并做处理。没有 try 就不能用 catch。
try 里放你怀疑会抛错的代码,比如 JSON 解析、API 调用、DOM 操作catch (err) 中的 err 是一个 Error 实例,通常有 message、name、stack 属性catch{},必须带参数,否则无法访问错误信息finally 块无论是否出错都会执行,适合关掉加载状态、释放定时器、还原 UI 等操作。
finally 里统一隐藏,避免因错误没走 catch 导致 loading 卡住finally 不接收参数,也不影响 catch 的逻辑try 或 catch 中写了 return,finally 仍会先执行不是所有错误都该一视同仁。你可以用 instanceof 或检查 err.name 来区分错误来源。
立即学习“Java免费学习笔记(深入)”;
SyntaxError:常见于 JSON.parse() 遇到非法字符串TypeError:调用不存在的方法、读取 null 的属性等ReferenceError:访问未声明的变量err instanceof MyCustomError 判断它只能捕获同步代码和 throw 出来的错误,对以下情况无效:
setTimeout、事件监听器),需在回调内部加 try...catch
reject)不会触发 catch,要用 .catch() 或 await 配合 try...catch
window.onerror 或 addEventListener('error')
不复杂但容易忽略。写 try...catch 不是为了掩盖问题,而是让错误可控、可追溯、不影响主流程。