errorHandler.ts 750 B

12345678910111213141516171819202122232425262728293031323334
  1. import { Context } from 'hono'
  2. import { z } from '@hono/zod-openapi'
  3. import { HTTPException } from 'hono/http-exception'
  4. export const ErrorSchema = z.object({
  5. code: z.number().openapi({
  6. example: 400,
  7. }),
  8. message: z.string().openapi({
  9. example: 'Bad Request',
  10. }),
  11. })
  12. export const errorHandler = async (err: Error, c: Context) => {
  13. if (err instanceof HTTPException) {
  14. const details = err.cause ? { details: err.cause instanceof Error ? err.cause.message : err.cause } : {}
  15. return c.json(
  16. {
  17. code: err.status,
  18. message: err.message,
  19. ...details
  20. },
  21. err.status
  22. )
  23. }
  24. return c.json(
  25. {
  26. code: 500,
  27. message: err.message || 'Internal Server Error'
  28. },
  29. 500
  30. )
  31. }