JavaScript中的自定义错误

JavaScript为我们提供了8个错误对象的集合,这些对象会根据错误类型在try / catch表达式中引发。他们是:

  • Error
  • EvalError
  • RangeError
  • ReferenceError
  • SyntaxError
  • TypeError
  • URIError

我在JavaScript错误教程。

在这里,我想解释如何通过扩展基本Error类来创建自己的自定义错误:

class OutOfFuelError extends Error {}

class FlatTireError extends Error {}

自定义错误使您可以根据特定的错误类型采取不同的行为,而无需借助错误消息来了解错误的类型。

try {
  //some code
} catch (err) {
  if (err instanceof OutOfFuelError) {
    //handle error
  } else if (err instanceof FlatTireError) {
    //handle error
  }
}

当然,在执行此操作之前,必须在代码中明确抛出该错误:

try {
  const car = new Car() //imagine we have a Car object

  if (!car.fuel) {
    throw new OutOfFuelError('No fuel!')
  }
  if (car.flatTire) {
    throw new FlatTireError('Flat tire!')
  }
} catch (err) {
  if (err instanceof OutOfFuelError) {
    //handle error
  } else if (err instanceof FlatTireError) {
    //handle error
  }
}

在错误创建期间,您还可以自定义与类相关的任何内容,甚至在需要时还可以自定义构造函数接收的参数:

class OutOfFuelError extends Error {
  constructor(message) {
    super(message)
    this.name = "OutOfFuelError"
  } 
}

免费下载我的JavaScript初学者手册


更多js教程: