xb18
xb18
文章78
标签0
分类0
error

error

error 对象

Error本身作为函数直接调用和被 new 调用的效果是一样的

1
2
3
4

const a = Error('a')

const b = new Error('b')

javascript 规范中总共有 8 中错误类型构造函数

  • Error – 错误对象
  • SyntaxError –解析过程语法错误(上面提到的编译时异常)
  • TypeError – 不属于有效类型(上面举例的运行时异常)
  • ReferenceError – 无效引用(严格模式下直接访问一个未定义的变量)
  • RangeError – 数值超出有效范围
  • URIError – 解析 URI 编码出错
  • EvalError – 调用 eval 函数错误
  • InternalError – Javascript 引擎内部错误的异常抛出, “递归太多”

Error 是错误的基类,其他类型都继承 Error 这个类

1
2
3
4
5
6
7
8
9
10
11
12

console.log(Object.getPrototypeOf(SyntaxError) === Error); // true

console.log(Object.getPrototypeOf(TypeError) === Error); // true

console.log(Object.getPrototypeOf(ReferenceError) === Error); // true

console.log(Object.getPrototypeOf(RangeError) === Error); // true

console.log(Object.getPrototypeOf(URIError) === Error); // true

console.log(Object.getPrototypeOf(EvalError) === Error); // true

默认的 error 对象只有一个 message 信息,很多时候对于错误的细分是很不好使,一般可以通过扩展这个错误对象,抛异常时抛出自定义的错误对象,在异常处理或时实现更精细化的处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

class ApiError extends Error {

constructor(message, code) {

super(message);

this.code = code

}

}



const err = new ApiError('xxx', 404)

err instanceof ApiError

一种常见的应用就是在 axios 处理的异常中抛出一个扩展的 ApiError 对象,传递错误信息、错误等,在错误处理时对于这种错误进行特殊处理。如自定义上报、catch 住不作为 js 异常上报。

抛出error

1
throw new Error('xxxx')
本文作者:xb18
本文链接:https://moelj.com/2024/05/06/error/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可