Skip to content
Snippets Groups Projects
Commit a58136e8 authored by L4168's avatar L4168
Browse files

fixed global error handling

parent 32f2cf56
No related branches found
No related tags found
3 merge requests!59Development to master,!31Development,!21Error handling
import { Catch, ExceptionFilter, HttpException, ArgumentsHost, Logger } from "@nestjs/common"; import {
ExceptionFilter,
Catch,
ArgumentsHost,
Logger,
HttpException,
HttpStatus,
} from '@nestjs/common';
@Catch() @Catch()
export class HttpErrorFilter implements ExceptionFilter { export class HttpErrorFilter implements ExceptionFilter {
catch(exception: HttpException, host: ArgumentsHost) { catch(exception: HttpException, host: ArgumentsHost) {
const ctx = host.switchToHttp(); const ctx = host.switchToHttp();
const request = ctx.getRequest(); const response = ctx.getResponse();
const response = ctx.getResponse(); const request = ctx.getRequest();
const status = exception.getStatus(); const status = exception.getStatus
? exception.getStatus()
: HttpStatus.INTERNAL_SERVER_ERROR;
const errorResponse = { const errorResponse = {
code: status, code: status,
timestamp: new Date().toLocaleDateString(), timestamp: new Date().toLocaleDateString(),
path: request.url, path: request.url,
method: request.method, method: request.method,
message: exception.message.error || exception.message || null, message:
}; status !== HttpStatus.INTERNAL_SERVER_ERROR
? exception.message.error || exception.message || null
: 'Internal server error',
};
Logger.error(`${request.method} ${request.url}`, JSON.stringify(errorResponse), "ExceptionFilter"); if (status === HttpStatus.INTERNAL_SERVER_ERROR) {
Logger.error(
response.status(404).json({errorResponse}); `${request.method} ${request.url}`,
exception.stack,
'ExceptionFilter',
);
} else {
Logger.error(
`${request.method} ${request.url}`,
JSON.stringify(errorResponse),
'ExceptionFilter',
);
} }
}
\ No newline at end of file response.status(status).json(errorResponse);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment