• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

try catch문이 있는데 if문으로 에러처리를 따로 하는 이

23.08.01 12:58 작성 조회수 591

0

router.get("/", async (req, res, next) => {
  try {
    if (req.user) {
      // findOne에서 에러가 생기는 거는 try catch문으로 처리가 안된
      const user = await User.findOne({
        where: { id: req.user.id },
      });
      res.status(200).json(user);
    } else {
      res.status(200).json(null);
    }
  } catch (error) {
    console.error(error);
    next(error);
  }
});

이부분에서 아직 로그인을 하지 않아서 유저 정보가 없을때 User.findOne에서 에러가 나기 때문에 if문으로 감싸서 아직 유저정보가 없을 때를 예외 처리 해주셨는데 어차피 User.findOne에서 에러가 나면 catch문으로 이동해서 에러가 처리가 되는데 굳이 if else로 예외 처리 하신 이유가 있나요?

답변 1

답변을 작성해보세요.

0

else 부분을 보시면 되지 않을까요? ㅎㅎ 그리고 findOne에서 에러가 나는게 아니라 req.user.id에서 타입에러가 나는 겁니다.

catch로 보내서 처리한다고 해도 catch에서는 어떻게 처리하실 건가요?

i1004gy님의 프로필

i1004gy

질문자

2023.08.02

redux devtools로 확인해 봤을때 제가 redux devtools로 구현을 해서 else를 쓰게 되면 fulfilled로 처리가 되어서 payload에 null이 들어오게 되고

else문을 안쓰게 되면 rejected로 처리가 되어서 error가 됐다고 나옵니다 에러 처리방식? 사용자에게 에러를 보여주는 방식이 다르다고 생각이 드는데 기호에 따라 사용하면 되나요?

redux devtools로 구현을 했다는 게 무슨 말씀이신가요?

req.user.id에서 req.user가 없어서 req.user.id에서 에러가 나는 상황은 명백한 서버 잘못입니다. (타입에러) 그걸 방치하고 프론트에 에러를 보내서 프론트에서 에러를 처리하게 하는 것은 말도 안 되는 짓입니다. 서버 개발자의 자격이 없는 것이고 저라면 바로 해고합니다. 기호의 문제가 아니라 매우 심각한 상황인 겁니다.

i1004gy님의 프로필

i1004gy

질문자

2023.08.03

ㅎㄷㄷ 그렇군요 redux devtools로 구현을 했다는 것은 redux toollkit으로 구현했다고 해야했는데 제가 잘못 적었네요 죄송합니다

프론트에러와 백앤드에러는 확실히 구분을 해서 사용해야겠군요 감사합니다!