Files
d8d-vite-starter/src/server/utils/errorHandler.ts
D8D Developer d371fbaefa init
2025-06-27 03:31:29 +00:00

34 lines
736 B
TypeScript

import { Context } from 'hono'
import { z } from 'zod'
import { HTTPException } from 'hono/http-exception'
export const ErrorSchema = z.object({
code: z.number().openapi({
example: 400,
}),
message: z.string().openapi({
example: 'Bad Request',
}),
})
export const errorHandler = async (err: Error, c: Context) => {
if (err instanceof HTTPException) {
const details = err.cause ? { details: err.cause instanceof Error ? err.cause.message : err.cause } : {}
return c.json(
{
code: err.status,
message: err.message,
...details
},
err.status
)
}
return c.json(
{
code: 500,
message: err.message || 'Internal Server Error'
},
500
)
}