[포트폴리안] node.js에서 예외처리 깔끔하게 하기

5494 단어 node.js해결node.js

문제 발생

포트폴리안은 나의 첫 node.js 프로젝트이다.
비동기 코드를 작성하는데 익숙하지 않아서 수많은 await과 try-catch문을 사용했다.
이렇게 되니 생각하지 못한 오류가 발생했을 때 response를 제대로 반환하지 못하는 상황도 생겼고
리팩토링 해야하는 코드(보기 어려운 스파게티 코드)가 점점 쌓이고 있었다..
스파게티 코드가 쌓이다 보니 기능 추가에 한계를 느꼈고 본격적인 채팅기능 구현에 앞서
예외처리를 깔끔하게 해 개발할 맛이 나는 코드로 바꾸고자 한다!!

현재 나의 코드

let getUserInfo = async (req,res) => {
    let verifyTokenRes = await authServiceInstance.verifyAccessToken(req.headers);
    if (verifyTokenRes === null || verifyTokenRes.code < 0)
    {
        res.status(401).json(verifyTokenRes);
        return;
    }
    try {
        const userInfo = await userServiceInstance.getUserInfo(req.params.userId);
        if (!userInfo)
            return res.status(404).json('나의 정보보기 오류');
        res.status(200).json(userInfo);
    } catch (e) {
        console.log(e);
        res.status(500).json({ message: "회원정보 조회 실패" });
    }
}

회원 정보를 받아오는 controller 내 함수이다.
(token 확인하는 건 다음 포스트에 미들웨어를 적용할 예정)

코드를 보면 함수 전체를 try catch로 감싸고 있다!!!
이게 controller의 함수 뿐만 아니라 service내 함수도 모두 이런식으로
try-catch가 있어서 어디서 어떤 것 때문에 에러가 났는 지 몰라 유지보수 하기에 굉장히 힘들었다.

최근 Spring프로젝트를 진행할 때 @ControllerAdvice@ExceptionHandler를 사용하여
예외처리를 편리하게 하는 방법을 배웠고 예외처리를 전역으로 하는 것이 너무 편리해서 놀랐다.
그래서 포트폴리안도 이렇게 예외처리를 편하게 바꾸고 싶다는 생각을 했다~

좋은 웹페이지 즐겨찾기