Lỗi tùy chỉnh trong JavaScript

JavaScript cung cấp cho chúng ta một tập hợp 8 đối tượng lỗi, được đưa ra trong biểu thức try / catch tùy thuộc vào loại lỗi. Họ đang:

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

Tôi đã phân tích tất cả chúng trongLỗi JavaScripthướng dẫn.

Ở đây tôi muốn giải thích cách tạo lỗi tùy chỉnh của riêng bạn bằng cách mở rộng lớp Lỗi cơ sở:

class OutOfFuelError extends Error {}

class FlatTireError extends Error {}

Lỗi tùy chỉnh cho phép bạn xử lý khác nhau dựa trên loại lỗi cụ thể mà không cần sử dụng thông báo lỗi để hiểu loại lỗi.

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

Trước khi bạn có thể làm như vậy, tất nhiên lỗi phải được ghi rõ ràng trong mã của bạn:

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
  }
}

Trong quá trình tạo lỗi, bạn cũng có thể tùy chỉnh bất kỳ thứ gì liên quan đến lớp, thậm chí tùy chỉnh các tham số mà hàm tạo nhận được nếu bạn cần:

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

Tải xuống miễn phí của tôiSổ tay dành cho Người mới bắt đầu JavaScript


Các hướng dẫn js khác: