Files
admin/apps/backend/app/exceptions/handler.ts
T

67 lines
2.1 KiB
TypeScript
Executable File

import app from '@adonisjs/core/services/app'
import { HttpContext, ExceptionHandler } from '@adonisjs/core/http'
import { Exception } from '@adonisjs/core/exceptions'
export default class HttpExceptionHandler extends ExceptionHandler {
/**
* In debug mode, the exception handler will display verbose errors
* with pretty printed stack traces.
*/
protected debug = !app.inProduction
/**
* The method is used for handling errors and returning
* response to the client
*/
async handle(error: unknown, ctx: HttpContext) {
if (error instanceof Exception && error.code === 'E_FILE_NAME_MISSING_EXTENSION') {
return ctx.response.status(error.status).send({
message: error.message,
code: error.code,
})
}
if (error instanceof Exception && error.code === 'E_ENTRY_NAME_NOT_CHANGED') {
return ctx.response.status(error.status).send({
message: error.message,
code: error.code,
})
}
if (error instanceof Exception && error.code === 'E_ENTRY_ALREADY_EXISTS') {
return ctx.response.status(error.status).send({
message: error.message,
code: error.code,
})
}
if (error instanceof Exception && error.code === 'E_DIRECTORY_ALREADY_EXISTS') {
return ctx.response.status(error.status).send({
message: error.message,
code: error.code,
})
}
if (error instanceof Exception && error.code === 'E_FILE_NOT_FOUND') {
return ctx.response.status(error.status).send({
message: error.message,
code: error.code,
})
}
if (error instanceof Exception && error.code === 'E_DIR_NOT_FOUND') {
return ctx.response.status(error.status).send({
message: error.message,
code: error.code,
})
}
return super.handle(error, ctx)
}
/**
* The method is used to report error to the logging service or
* the 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)
}
}