javascript错误如何捕获_Try...Catch语句应该怎么用?

JavaScript错误捕获主要靠try...catch,需try块包裹可能出错代码,catch接收Error实例处理,finally无论成败均执行用于清理;它仅捕获同步错误和throw异常,异步错误需在回调或Promise中单独处理。

JavaScript 中的错误捕获主要靠 try...catch 语句,它能让你在代码出错时不直接崩溃,而是有机会处理异常、记录日志或给用户友好提示。

基本结构:try + catch 是标配

必须有 try 块包裹可能出错的代码,catch 块接收错误对象并做处理。没有 try 就不能用 catch

  • try 里放你怀疑会抛错的代码,比如 JSON 解析、API 调用、DOM 操作
  • catch (err) 中的 err 是一个 Error 实例,通常有 messagenamestack 属性
  • 不要只写 catch{},必须带参数,否则无法访问错误信息

可选但推荐:加上 finally 清理资源

finally 块无论是否出错都会执行,适合关掉加载状态、释放定时器、还原 UI 等操作。

  • 比如发起请求前显示 loading,finally 里统一隐藏,避免因错误没走 catch 导致 loading 卡住
  • finally 不接收参数,也不影响 catch 的逻辑
  • 即使 trycatch 中写了 returnfinally 仍会先执行

进阶技巧:按错误类型分别处理

不是所有错误都该一视同仁。你可以用 instanceof 或检查 err.name 来区分错误来源。

立即学习“Java免费学习笔记(深入)”;

  • SyntaxError:常见于 JSON.parse() 遇到非法字符串
  • TypeError:调用不存在的方法、读取 null 的属性等
  • ReferenceError:访问未声明的变量
  • 自定义错误可用 err instanceof MyCustomError 判断

注意边界:try...catch 捕不到所有错误

它只能捕获同步代码和 throw 出来的错误,对以下情况无效:

  • 异步回调里的错误(如 setTimeout、事件监听器),需在回调内部加 try...catch
  • Promise 拒绝(reject)不会触发 catch,要用 .catch()await 配合 try...catch
  • 全局错误(如语法错误、资源加载失败)需用 window.onerroraddEventListener('error')

不复杂但容易忽略。写 try...catch 不是为了掩盖问题,而是让错误可控、可追溯、不影响主流程。