「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」
水文一篇,毫无营养价值,各位看官速速浏览即可,别浪费时间细读,感谢。
作为互联网时代软件产品研发中不可缺少的一种专业研发角色,我们经常被用来检索、展示以及传递Web信息资源的应用程序吊打,各种轮番吊打,让你体验最初的写由字符、符号或信号码元以离散形式表示信息的明确规则体系的乐趣。
Error
通常习惯这样初始化和使用一个Error对象。
const error = new Error('Chrome console is stupid.')
throw error;
juejin竟然埋彩蛋,差点被梵高洗脑🐶
也可以直接当成函数使用
const error = Error('I am an Error.')
Error的构造函数,有三个部分构成,message,fileName, lineNumber,其中message是必传参数,也是所有浏览器唯一兼容的字段。文件名和行号是可选参数,默认表示当前调用Error构造函数的文件名字和代码行号。
接下来,我们看看Error的几个负责看场子的小弟。
(截图来自于v8 value-serializer.cc L958)
每次写blog都是历练,本想着偷偷懒水一篇,发现还有很多东西要重新学习。
EvalError
顾名思义,它是处理eval函数的。
尝试了各种办法,没有找到合适的方式,想通过js代码的方式触发EvalError。
这里引用ECMA262解释为
This exception is not currently used within this specification. This object remains for compatibility with previous editions of this specification.
翻译过来就是,“当前规范没有使用EvalError,保留它的目的是为了兼容以前的规范”。
throw new EvalError('eval error.')
RangleError
数值超出允许的范围。
对于ArrayBuffer,如果 length 大于 Number.MAX_SAFE_INTEGER(>= 2 ** 53)或为负数,则抛出一个 RangeError 异常。
ReferenceError
引用了不存在的对象,就会抛出引用错误。
SyntaxError
语法错误
TypeError
最常见的错误,变量传错,或者函数参数错误,经常会遇到这类提示。
%TypedArray%构造器自身不是特别有用,直接调用或使用new表达式实例化都会抛出一个TypeError异常
URIError
使用URI处理函数导致产生的错误。
总结
在编码中,注意Error的场景,合理使用,帮助我们少走弯路。
也可以设计CustomError,继承自Error并添加对应的错误收集机制,有效的解决各种容错场景,让我们的代码更优雅🙆♂️