Error handling
¿Cómo manejar errores?
Se utiliza la clase OmniaError, un error personalizado que extiende de la clase Error.
Tiene 5 campos principales:
name = 'OmniaError'; // Identificador
statusCode: StatusCode; // Código HTTP (401, 500, etc)
errorCode: ErrorCode; // Código interno que usamos en el frontend
originalError?: Error; // Error original (opcional)
message: string; // Mensaje visible en consola
Usa una librería para importar los códigos HTTP:
import { StatusCodes } from 'http-status-codes';
Formas de Lanzar Errores
Siempre se importa desde: import { OmniaError } from 'back/helpers/error.helpers';
Ejemplo 1 (Recomendado)
OmniaError.Throw({
statusCodeName: 'METHOD_NOT_ALLOWED',
errorCode: 'ACCOUNT_ALREADY_CLOSED',
});
Ejemplo 2
Se define el config del error primero con 'as const':
const accountError = {
statusCodeName: 'METHOD_NOT_ALLOWED',
errorCode: 'ACCOUNT_ALREADY_CLOSED',
} as const;
OmniaError.Throw(accountError);
Útil si se lanza el mismo error varias veces dentro de una función o archivo.
Ejemplo 3
Se define una función estática en OmniaError.
static ThrowAccountAlreadyClosed() {
this.Throw({
statusCodeName: 'METHOD_NOT_ALLOWED',
errorCode: 'ACCOUNT_ALREADY_CLOSED',
});
}
Se usa así:
OmniaError.ThrowAccountAlreadyClosed();
Recomendado cuando el mismo error se reutiliza en muchos archivos.