怎样使用Error对象处理异常_有哪些错误类型

13次阅读

javaScript中Error对象是处理运行时异常的核心,支持创建抛出、trycatch捕获、内置错误类型及自定义错误类,实现错误的可读、可控、可追踪。

怎样使用Error对象处理异常_有哪些错误类型

javascript 中的 Error 对象是捕获和处理运行时异常的核心工具,它不仅能帮你定位问题,还能自定义错误逻辑。关键不在于“有没有报错”,而在于“怎么让错误变得可读、可控、可追踪”。

一、创建并抛出 Error 对象

throw new Error(message) 主动触发异常,message 建议具体明确,避免只写“出错了”:

  • throw new Error("用户未登录,无法提交表单")
  • throw new Error(`接口 ${url} 返回状态码 ${status}`)

注意:throw 后代码不会执行,会立即中断当前流程,交由最近的 catch 或全局机制处理。

二、用 try…catch 捕获并处理

把可能出错的代码包进 try,在 catch 中接收 Error 实例,从中提取有用信息:

  • error.message:开发者写的提示文字(最常用)
  • error.name:错误类型名,如 "TypeError""SyntaxError"
  • error.stack:调用,用于定位出错位置(开发调试时非常关键)

示例:

try {   jsON.parse("{invalid: json}"); } catch (err) {   console.error(`${err.name}: ${err.message}`);   // 输出:SyntaxError: Unexpected token i in JSON at position 1 }

三、常见的内置错误类型

除了通用 Error,JS 还预置了 7 种标准子类,每种对应一类典型问题:

  • EvalError:已废弃,现代代码中基本不用
  • SyntaxError:代码解析失败,比如少括号、错别字(if (x = 1) 不报此错,那是逻辑错)
  • ReferenceError:访问未声明的变量,如 console.log(undeclaredVar)
  • TypeError:操作不兼容的类型,如 NULL.toString()42.toUpperCase()
  • RangeError:数值超出有效范围,如 new Array(-1)递归过深
  • URIErrorencodeURI()decodeURI() 参数格式非法
  • AggregateError:ES2020 新增,用于 promise.allSettled() 等场景中聚合多个错误

四、自定义错误类型(提升可维护性)

当业务逻辑复杂时,建议继承 Error 创建专属类,便于后续用 instanceof 区分处理:

class ApiError extends Error {   constructor(message, statusCode) {     super(message);     this.name = "ApiError";     this.statusCode = statusCode;   } }  // 使用 throw new ApiError("服务器忙,请稍后重试", 503);

这样你就能在 catch 中判断:if (err instanceof ApiError) { ... },实现差异化响应(比如自动重试 vs 弹窗提示)。

text=ZqhQzanResources