js中的各种错误类型

150 阅读1分钟
  • SyntaxError 对象代表尝试解析语法上不合法的代码的错误。(javascript本身无不支持的写法)
 void();
  • TypeError(类型错误) 对象用来表示值的类型非预期类型时发生的错误。(如在基本数据类型上使用原型上也没有的复杂数据类型)
let a = 2;
console.log(a.c.gs);
  • ReferenceError(引用错误)对象代表当一个不存在(或尚未初始化)的变量被引用时发生的错误。(如没有被声明对象,直接使用)
console.log(obj.a)
  • URIError 对象用来表示以一种错误的方式使用全局 URI 处理函数而产生的错误。(如decodeURIComponent解码非法URL)
decodeURIComponent('%')
  • EvalError eval 函数的错误
  • InternalError 当 JavaScript 引擎出现内部错误时将会抛出InternalError。(如递归过深、过多case子句、正则表达式中括号过多、数组初始化器过大)
  • RangeError对象标明一个错误,当一个值不在其所允许的范围或者集合中。

了解这些主要是为了快速定位错误,例如生产环境报错,出于安全机制考虑,是不展示出来的,就会加入监控系统,进行上报这些js的错误。常见捕获的方式如下

js相关错误

window.addEventListener("error", function (event) {
  console.log("🚀~ event", event);
});

随便在一个网站执行这个代码,就可以捕获到相关错误信息:

image.png

promise相关错误:

window.addEventListener('unhandledrejection', function (event) {
  console.log('promise reject', event.reason);
});