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教程: