42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { HttpContext, ExceptionHandler } from '@adonisjs/core/http'
|
|
|
|
export default class HttpExceptionHandler extends ExceptionHandler {
|
|
/**
|
|
* In debug mode, the exception handler will display verbose errors
|
|
* with pretty printed stack traces.
|
|
*/
|
|
protected debug = false
|
|
|
|
/**
|
|
* Status pages are used to display a custom HTML pages for certain error
|
|
* codes. You might want to enable them in production only, but feel
|
|
* free to enable them in development as well.
|
|
*/
|
|
protected renderStatusPages = false
|
|
|
|
/**
|
|
* The method is used for handling errors and returning
|
|
* response to the client
|
|
*/
|
|
async handle(error: any, ctx: HttpContext) {
|
|
const statusCode = error.status || error.statusCode || 500
|
|
const message = error.messages || error.message || 'Internal Server Error'
|
|
const stack = this.debug ? error.stack : undefined
|
|
const response = {
|
|
status: statusCode,
|
|
error: message,
|
|
stack,
|
|
}
|
|
return ctx.response.status(statusCode).json(response)
|
|
}
|
|
|
|
/**
|
|
* The method is used to report error to the logging service or
|
|
* the a third party error monitoring service.
|
|
*
|
|
* @note You should not attempt to send a response from this method.
|
|
*/
|
|
async report(error: unknown, ctx: HttpContext) {
|
|
return super.report(error, ctx)
|
|
}
|
|
}
|