Errores personalizados en JavaScript

JavaScript nos da un conjunto de 8 objetos de error, que se generan en una expresión try / catch dependiendo del tipo de error. Son:

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

Los analicé todos en elErrores de JavaScripttutorial.

Aquí quiero explicar cómo crear sus propios errores personalizados extendiendo la clase de Error base:

class OutOfFuelError extends Error {}

class FlatTireError extends Error {}

Los errores personalizados le permiten comportarse de manera diferente según el tipo de error específico, sin recurrir al uso de mensajes de error para comprender el tipo de error.

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

Antes de que pueda hacerlo, por supuesto, el error debe incluirse explícitamente en su código:

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

Durante la creación del error, también puede personalizar cualquier cosa relacionada con la clase, incluso personalizando los parámetros recibidos por el constructor si necesita:

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

Más tutoriales de js: