已合作成功的客户

遍及全国及海外

中国

杭州,绍兴,宁波,湖州,嘉兴,温州,台州,上海,北京,南京,苏州,常州,无锡,长沙,青岛,江西,台湾,南宁,海南,成都,哈尔滨,深圳,香港,沈阳 ...

海外

美国,加拿大,丹麦,澳大利亚,新加坡,法国,智利,日本,英国 ...

合作咨询

4001-355-360

洞见

news

洞察行业新闻,实时了解最新动态

JS 错误对象:搞懂程序出错时的那些信息

作者:admin

来源:lanyunwork

时间:2026-04-08

分享到:

 

写 JavaScript 的时候,报错是免不了的事。但报错并不是随便弹出一行看不懂的红字那么简单。每次出错,JavaScript 都会生成一个错误对象,里面包含了关于这个问题的各种信息。弄懂这些对象,能帮自己更快地定位问题,也能在代码里更好地处理异常情况。

错误对象的基本结构

所有内置的错误类型都继承自最基础的 Error 对象。这个对象主要提供两个常用的属性。第一个是 message,里面存放了描述错误的文字信息,通常是可读的句子。第二个是 name,表示错误的类型名称,比如 TypeError 或 RangeError。

除了这两个,部分环境还会提供 stack 属性。这个属性会记录错误发生时,代码调用栈的完整信息,可以清楚看到是哪个文件、哪一行、哪一个函数触发的错误。在调试复杂项目时,stack 往往比 message 更有用。

常见的几种错误类型

JavaScript 内置了多种具体的错误类型,用来区分不同性质的错误。

SyntaxError 表示语法错误。这类错误发生在代码解析阶段,比如少写了一个括号,或者用了不合语法的写法。语法错误通常会导致整个代码块无法运行,修复方式也比较直接,按提示把语法写对就行。

ReferenceError 发生在引用了一个未声明的变量时。比如写了一个变量名,但之前没有用 let、const 或 var 定义过。还有一种情况是使用 let 或 const 声明的变量,在定义之前就去访问它,也会触发这类错误。

TypeError 是比较常见的一种错误。当一个值被用在不合适的类型上时就会触发。比如把一个数字当作函数去调用,或者读取 undefined 的属性。大多数情况下,这表示代码对某个变量的类型预期和实际不符。

RangeError 发生在数值超出允许范围的时候。比如创建数组时传入了一个负数长度,或者递归函数无限调用导致调用栈溢出。这类错误通常和参数的合法性有关。

URIError 出现在使用全局的 URI 处理函数时,比如 decodeURIComponent 或 encodeURI 传入了不合法的字符串。日常开发中碰到相对少一些,主要在处理 URL 编码解码时需要注意。

EvalError 是比较老的历史遗留类型。在现在的 JavaScript 标准中已经很少会主动抛出,基本可以忽略。

自定义错误对象

除了 JavaScript 自己抛出的错误,开发者也可以主动创建和抛出错误。用 new Error 可以创建一个通用的错误对象,也可以选择具体的错误类型,比如 new TypeError。主动抛错误通常用在函数参数校验或业务逻辑判断中,当某些条件不满足时,主动中断执行并给出清晰的错误信息。

如果项目比较复杂,还可以通过继承 Error 类来创建自己的错误类型。比如创建一个 ApiError 或 ValidationError,这样可以更方便地区分不同来源的错误。自定义错误类型时需要注意保留 name 和 stack 属性的正常行为,通常需要在构造函数中调用父类并手动设置 name。

错误对象的实际用途

在 try...catch 结构中捕获到的错误,就是一个错误对象实例。通过判断它的 name 或构造函数,可以知道具体是哪一类错误,从而采取不同的处理方式。比如网络请求失败和参数类型错误,应该走的处理逻辑是不一样的。

记录错误信息时,message 适合展示给开发者在控制台看,而 stack 适合上报到日志系统,帮助排查生产环境的问题。不过 stack 属性的格式在不同浏览器中略有差异,如果需要解析它,需要做一些兼容处理。

使用时的注意点

不是所有的 throw 后面都必须跟 Error 对象。JavaScript 允许抛出任意类型的值,比如字符串、数字甚至是对象。但在实际开发中,建议统一抛出 Error 对象或其子类的实例。这样在 catch 里面可以统一通过 message 和 name 来获取信息,处理起来更规范。

另外,在异步代码中抛出的错误,如果没有被 catch 捕获,可能会丢失或导致进程退出。尤其在 Promise 或 async/await 中,要确保错误路径有对应的处理,否则错误对象可能被静默吞掉,不利于调试。

总结

错误对象是 JavaScript 里一类比较特殊但很实用的内置对象。它们记录了出错的类型、描述和位置信息。熟悉不同错误类型的含义,可以更快地看懂报错提示。学会主动创建和抛出错误,也能让代码在遇到问题时给出更清晰的反馈。在调试和异常处理上多花一点心思,后期维护起来会轻松不少。

 

业务咨询

微信咨询

请扫二维码
咨询项目经理

400电话

4001-355-360

获取方案

与蓝韵项目经理通话

请输入正确的手机号码格式

信息保护中请放心填写

在线咨询
 
提交成功
关闭浮窗