A progressive Node.js framework for building efficient and scalable server-side applications.
Nestjs Exception handling implementation. Includes: * Handler's chain mechanism * Custom exception to inherit from * Implemented Nest JS Validation Exception handler
Exception structure:
{
code: "ERROR:<ENTITY>-<CODE_MESSAGE>"
status: 500,
title: "Error!",
message: 'This was screwed',
body: { any info you like }
}
Nest framework TypeScript starter repository.
$ npm install @asemin/nestjs-utils
Class must extend ExceptionHandler and implement handle
method. Method must return HandlerExceptionDto filled.
export class MongoExceptionHandler extends ExceptionHandler{
handle(exception: any): HandledExceptionDto {
if ( !(exception instanceof MongoError) )
return this.next?.handle(exception);
switch (exception.code) {
case 11000:
return new HandledExceptionDto(getException(CODES.DATABASE.DUPLICATE));
}
return null;
}
}
Each member must extend ExceptionHandler
export const handlersChain = [
new MongoExceptionHandler(),
new ValidationExceptionHandler(),
new CustomExceptionHandler(),
new HttpExceptionHandler()
];
const exceptionFilter = new ExceptionFilter(
<ExceptionHandler>createExceptionHandlersChain(handlersChain)
);
app.useGlobalFilters(exceptionFilter);
Use one of the codes. Fill free to put any information to body (second param) If there are no code suitable - throw any exception type manually.
throwException(CODES.COMMON.EMPTY_PARAM, {method: 'getByPermissionAndPermissionSets', fields: {permissionId, permissionSetIds}})
const {code, status, message} = getException(CODES.COMMON.UNKNOWN);