에러 처리 미들웨어

글로벌 에러 핸들링

일관된 에러 응답 형식 제공

function errorHandlerMiddleware() {
  return {
    handle: (error, req) => {
      console.error("Error:", error);

      if (error instanceof SyntaxError) {
        return new Response("Invalid JSON", {
          status: 400,
          headers: { "Content-Type": "application/json" }
        });
      }

      return new Response(JSON.stringify({
        error: "Internal Server Error",
        message: error.message
      }), {
        status: 500,
        headers: { "Content-Type": "application/json" }
      });
    }
  };
}

const server = Bun.serve({
  port: 3000,
  async fetch(req) {
    const errorHandler = errorHandlerMiddleware();

    try {
      if (req.method === "POST") {
        const body = await req.json();
        return new Response(JSON.stringify(body));
      }

      return new Response("OK");
    } catch (error) {
      return errorHandler.handle(error, req);
    }
  }
});

에러 응답 예시

{
  "error": "Internal Server Error",
  "message": "Cannot read property 'x' of undefined"
}