Documentation / zerotal / index / ExceptionHandler
Abstract Class: ExceptionHandler
Defined in: packages/core/src/application/ExceptionHandler.ts:31
Base class for application-level exception handling.
Register a subclass with app.withExceptionHandler(Handler) in
bootstrap/app.ts. The framework calls report() then render() for
every unhandled exception thrown by a route handler or middleware.
Example
// app/exceptions/Handler.ts
import { ExceptionHandler } from '@zerotal/core';
export class Handler extends ExceptionHandler {
override async render(err: unknown, ctx: HttpContext): Promise<Response> {
if (err instanceof ModelNotFoundError) {
return Response.json({ message: 'Not found' }, { status: 404 });
}
return super.render(err, ctx);
}
}
Constructors
Constructor
new ExceptionHandler():
ExceptionHandler
Defined in: packages/core/src/application/ExceptionHandler.ts:34
Returns
ExceptionHandler
Properties
dontReport
protecteddontReport: (...args) =>unknown[] =[]
Defined in: packages/core/src/application/ExceptionHandler.ts:36
Parameters
args
...never[]
Returns
unknown
Methods
shouldReport()
protectedshouldReport(error):boolean
Defined in: packages/core/src/application/ExceptionHandler.ts:46
Parameters
error
unknown
Returns
boolean
report()
report(
error,_ctx?):Promise<void>
Defined in: packages/core/src/application/ExceptionHandler.ts:55
Parameters
error
unknown
_ctx?
HttpContext<Record<string, string>>
Returns
Promise<void>
render()
render(
error,ctx):Promise<Response>
Defined in: packages/core/src/application/ExceptionHandler.ts:60
Parameters
error
unknown
ctx
Returns
Promise<Response>
defaultRender()
staticdefaultRender(error,ctx?):Promise<Response>
Defined in: packages/core/src/application/ExceptionHandler.ts:79
Shared error → Response logic.
Response format depends on what the client accepts:
Browser (Accept: text/html) → styled HTML page (all error classes) Inertia XHR (X-Inertia: true) → JSON (Inertia shows its own modal) API client (Accept: application/json) → JSON
Error-class routing:
- ValidationRedirectError → 303 redirect (always, any client)
- ValidationJsonError → 422 JSON (always — the errors object IS the response)
- ZerotalError 4xx → styled 4xx HTML or JSON depending on client
- Everything else → dev stack-trace page or minimal 500
Parameters
error
unknown
ctx?
HttpContext<Record<string, string>>
Returns
Promise<Response>