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

9次阅读

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

怎样使用 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 弹窗提示)。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-30发表,共计1301字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources