Error-handling
Customizing the Error Handler
In version 1, we had to provide an option to createApp
to use AppController.handleError
. This is no longer necessary.
// Before
const app = createApp(AppController, {
methods: {
handleError: true
}
});
// After
const app = await createApp(AppController);
Errors in Hook Post Functions
In version 1, hook post functions were skipped when an error was thrown or rejected. In version 2, this is no longer the case and the response passed to the post functions is an HttpResponseInternalServerError
instance.
class Controller {
@Get('/products')
@Hook(() => response => {
// Not executed in version 1.
// Executed in version 2 and the response is an `HttpResponseInternalServerError` instance.
console.log(response);
})
readProducts() {
throw new Error();
}
}
New features
The IAppController
interface
The AppController
can implement the IAppController
interface. In this way, we make sure that the optional methods init
and handleError
are correctly implemented as well as the subControllers
property.
Error details and HttpResponseInternalServerError
The default HttpResponseInternalServerError
instance returned by the error handler when an error is thrown or rejected has two new properties:
the error
and the ctx
.