es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Javascript – Crear errores personalizados y asegurarse de que los parámetros del constructor sean válidos.

He definido el siguiente objeto:

const AuthErrorCode = {
   EMAIL_ALREADY_EXISTS: {
      code: "auth/email-already-exists",
      message: "¡Hola mundo!"
   },
   ... más códigos de error
};

Y estoy implementando una clase que extiende de Error, la cual debe recibir un código y un mensaje personalizado opcional.

Esta clase tiene que comprobar que el código dado esté dentro del objeto AuthErrorCode (EMAILALREADYEXISTS || “auth/email-already-exists” son válidos). Si no está dentro, debería mostrar algún tipo de retroalimentación al programador (un error o algo). Es decir, necesito asegurarme de que el código sea válido dentro de AuthErrorCode, ya que de lo contrario, la clase se está usando incorrectamente.

¿Cómo puedo hacer eso? ¿Es posible?

Por ejemplo, este código debería fallar:

throw new AuthError("auth/some-invented-code", "¡Hola mundo!");

Ejemplo de uso correcto:

throw new AuthError("EMAIL_ALREADY_EXISTS", "¡Hola mundo!");
throw new AuthError("auth/email-already-exists");
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que el código proporcionado es un AuthErrorCode válido, puede agregar una comprobación en el constructor de la clase AuthError. Aquí hay una versión actualizada del constructor con la comprobación agregada:

    constructor(código, mensaje = undefined) {
      if (!AuthErrorCode[código]) {
        throw new Error(`AuthErrorCode inválido: ${código}`);
      }
    
      // resto del código
    }
    

    Esta comprobación usa el código como clave para acceder al valor correspondiente en el objeto AuthErrorCode. Si el valor es indefinido, entonces el código no es un AuthErrorCode válido y se lanza un error.

    Con esta comprobación en su lugar, cualquier intento de crear una AuthError con un código no válido fallará y notificará al programador de su error.

Comments are closed.