/

自訂錯誤在 JavaScript 中

自訂錯誤在 JavaScript 中

JavaScript 提供了一組 8 個錯誤物件,這些物件會根據錯誤類型在 try/catch 區塊中引發。它們分別是:

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

我在JavaScript errors教程中對它們進行了分析。

在這裡,我想解釋如何通過擴展基本 Error 類別來創建自己的自訂錯誤:

1
2
3
class OutOfFuelError extends Error {}

class FlatTireError extends Error {}

自訂錯誤物件能根據特定的錯誤類型以不同的方式進行處理,而不需要使用錯誤訊息來瞭解錯誤的類型。

1
2
3
4
5
6
7
8
9
try {
// 一些程式碼
} catch (err) {
if (err instanceof OutOfFuelError) {
// 處理錯誤方式
} else if (err instanceof FlatTireError) {
// 處理錯誤方式
}
}

在你的程式碼中,自訂錯誤必須明確地拋出才能執行上述動作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try {
const car = new Car() // 假設我們有一個 Car 物件

if (!car.fuel) {
throw new OutOfFuelError('沒有燃料!')
}
if (car.flatTire) {
throw new FlatTireError('爆胎了!')
}
} catch (err) {
if (err instanceof OutOfFuelError) {
// 處理錯誤方式
} else if (err instanceof FlatTireError) {
// 處理錯誤方式
}
}

在錯誤物件的建立過程中,你也可以自訂與類別有關的任何內容,甚至是自訂建構子接收的參數:

1
2
3
4
5
6
class OutOfFuelError extends Error {
constructor(message) {
super(message)
this.name = "OutOfFuelError"
}
}

tags: [“JavaScript”, “errors”, “custom errors”, “try/catch”]