@buildery/nest-exception-handling
v1.0.3
Published
<p align="center"> <a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo_text.svg" width="320" alt="Nest Logo" /></a> </p>
Downloads
28
Readme
Description
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.
Use
installation
$ npm install @asemin/nestjs-utils
Handler creation example
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;
}
}
handlers chain creation
Each member must extend ExceptionHandler
export const handlersChain = [
new MongoExceptionHandler(),
new ValidationExceptionHandler(),
new CustomExceptionHandler(),
new HttpExceptionHandler()
];
Nestjs exception filter configuration. main.ts:
const exceptionFilter = new ExceptionFilter(
<ExceptionHandler>createExceptionHandlersChain(handlersChain)
);
app.useGlobalFilters(exceptionFilter);
Custom exception use
throwException
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}})
getException info
const {code, status, message} = getException(CODES.COMMON.UNKNOWN);