## Global exception handler
1. create new file
> adonis make:ehandler
==>
Tạo ra file app/Exceptions/Handler.js
2. Ví dụ
Một khi đã tạo xong thì tất cả các exceptions sẽ đều chạy vào đây.
<!-->
const BaseExceptionHandler = use('BaseExceptionHandler')
class ExceptionHandler extends BaseExceptionHandler {
async handle (error, { response, session }) {
if (error.name === 'ValidationException') {
session.withErrors(error.messages).flashAll()
await session.commit()
response.redirect('back')
return
}
return super.handle(...arguments)
}
}
module.exports = ExceptionHandler
-->
Ở ví dụ trên là đã kiểm soát thêm ValidationException,
ghi nhận lỗi vào session flash và redirect về trang trước đó.
3. Hook một exception
File `start/hooks.js`
<!-->
const { hooks } = require('@adonisjs/ignitor')
hooks.after.providersBooted(() => {
const Exception = use('Exception')
Exception.handle('ValidationException', async (error, { response, session }) => {
session.withErrors(error.messages).flashAll()
await session.commit()
response.redirect('back')
return
})
})
-->
## Custom exceptions
1. Cơ bản
Ngoài các exception sẵn có, bạn có thể tự viết thêm các exception của riêng mình.
> `adonis make:exception Custom`
==> File app/Exceptions/CustomException.js sẽ được tạo ra.
<!-->
const { LogicalException } = require('@adonisjs/generic-exceptions')
const message = 'The item is in an status where modifications are disallowed'
const status = 403
const code = 'E_NOT_EDITABLE'
class CustomException extends LogicalException {
constructor () {
super(message, status, code)
}
}
module.exports = CustomException
-->
==> Sử dụng:
const CustomException = use('App/Exceptions/CustomException')
throw new CustomException()
2. Tự viết thêm handle method
<!-->
const { LogicalException } = require('@adonisjs/generic-exceptions')
class CustomException extends LogicalException {
handle (error, { response }) {
// write more code at here before response
response
.status(500)
.send('Custom exception handled!')
}
}
module.exports = CustomException
-->
Không có nhận xét nào:
Đăng nhận xét