Wecode - Project 3 (부트캠프)/Project 3 독학

에러 핸들링 w/ [asyncwrap, next, ErrorHandler.js ]

Queen Julia 2023. 10. 27. 17:28
동기 분께서 설명해주신 부분

1) async를 쓸 때

controller.js 에서 try, catch 지우고 

errorHandler.js 사용 ( 에러 시 일로 감)

 

         1-1) errorHandler.js 에서 next 사용 X 

 

         1-2) errorHandler.js 에서 next 사용 

2) async를 안 쓸 때

- controller.js 에서 try/catch를 쓴다  --> service.js에서 throw로 에러를 던진다 (그러니까 controller.js에서 catch로 잡는 것) 

(controller.js에서 try/catch쓰면, 가장 가까운 try catch로 가서 

    2-1) next 호출 -->  error handler로 보냄 

    2-2) res.status  // next(error) 사용x : error가 있으면, ErrorHandler.js 로 간다. --> res에서    res.status 를 보내준다 

 

3) next를 쓸 때 

next는 async를 쓰던 안 쓰던 상관 없음 
있어도 없어도 그만. 영향 없음 --> console.log 찍와 봐서 확인함 


1] next를 쓰게 되면, 함수 선언에 (req,res,next )  그리고 에러 처리 코드에서 next(error) 가 추가된다.  

          // const createOrders = async (req, res, next) => {
         // next(error);

2] 안 쓰면, 함수 선언 시 (req,res)만 그리고 에러 선언에 따로 next 관련 선언 필요 없음

       


           3-1) async O , errorHandler.js 에서 next 사용 X

 

 

          3-2) async O , errorHandler.js 에서 next 사용 

         

            3-3) async X, errorHandler.js 에서 next 사용 

         

 

          3-4) async X, errorHandler.js 에서 next  X

res.status(error.status || 500).json({ message: error.message });

사이이 위에 코드는 사라진다. 

 


추가 

res.status(error.status || 500).json({ message: error.message });   //error의 message

res.status(error.status || 500).json({ message: errorMessages });   //const errorMessages = [];


둘이 같은 코드이다. 

 

위 코드 

 

아래 코드 

 

 

 

Project2: Middleware 활용

개요 🗣 하나의 API가 온전히 작동하기 위해서는 여러 단계를 거쳐야 합니다. 그 단계를 자유롭게 추가하거나 삭제하는 방법인 middleware에 대해 배워 봅시다. 학습 목표 middleware가 무엇인지 설명

pm-developer-justdoit.tistory.com

 

middlewware 공부 , errorhandler, async

에러 핸들링 2 [적용] 1. throw로 에러 던져보기 에러를 던지는 방법으로 throw 이는 개발자가 작성하는 모듈에서 발생가능한 에러 상황에서 던지게 되며 상위 계층이나 호출하는 곳에서 모듈의 에

pm-developer-justdoit.tistory.com

 

에러 핸들링 [개념] 1

일반적으로 Javascript 에서는 try-catch문과 throw를 이용하여 에러를 처리 에러 핸들링 미들웨어는 에러를 처리하기 위해 반복적으로 진행되는 코드를 모듈화하여 소프트웨어의 확장성과 생산성을

pm-developer-justdoit.tistory.com

 

에러 핸들링 2 [적용]

1. throw로 에러 던져보기 에러를 던지는 방법으로 throw 이는 개발자가 작성하는 모듈에서 발생가능한 에러 상황에서 던지게 되며 상위 계층이나 호출하는 곳에서 모듈의 에러를 감지할 수 있습니

pm-developer-justdoit.tistory.com

 

 

Project 3: [주문 api] - if 에러 핸들링, transaction

에러 핸들링 1. 2. 2-1) 느낌표 위치 2-2) 공백 주의 참고 3. 수량이 36개 남았을 때 남은 36개 다 넣었을 때 장바구니 0개가 됨 장바구니 carts 테이블에 원래 있던 carts id 2 가 사라짐 --> 재고가 없기에 3

pm-developer-justdoit.tistory.com

 

 

Project 3 - [주문/결제 api] 에러 핸들링 코드 및 과정

3가지 에러 1. // 에러 핸들링: carts 에 담기지 않은 product를 주문할 때 -> productId 라서 for()안에 들어가야 함 const isProductInCarts = await orderDao.isProductInCarts(userId, productId); // await: userId, productId,(orderDetai

pm-developer-justdoit.tistory.com