minstudio

비동기 에러 핸들링 (전역 에러 미들웨어)

비동기 함수 안에서 에러가 발생했는데 try-catch로 잡아주지 않으면 Node.js 서버 프로세스가 통째로 죽어버리는(Crash) 대형 사고가 발생합니다. 이를 방지하기 위한 최후의 보루가 바로 전역 에러 미들웨어입니다.

// 1. 에러가 날 수 있는 비동기 로직
app.get("/danger", async (req, res, next) => {
    try {
        const data = await fetchSomething(); // 에러 발생!
        res.json(data);
    } catch (err) {
        // 에러를 캐치하면 next(err)를 호출해 전역 에러 처리기로 던짐!
        next(err); 
    }
});

// 2. 🚨 서버 맨 밑바닥에 설치하는 전역 에러 처리 미들웨어 (인자가 4개임)
app.use((err, req, res, next) => {
    console.error("에러 감지됨:", err.message);
    
    // 유저에게는 친절한 메시지만 보여주고 내부 에러는 숨김
    res.status(500).json({ error: "서버가 아파요. 잠시 후 다시 시도해주세요." });
});
실행 결과
비동기 에러 핸들링 (전역 에러 미들웨어) | Minstudio