개발자

try catch 가 예외처리가 맞나요?

2023년 05월 06일조회 2,116

제가 알기로 try catch는 오류가 아니라 예외가 발생했을 때 잡아주는 걸로 알고 있는데 아래 코드에서 axios 콜에서는 응답을 받으면 성공인거 아닌가요?? 근데 axios에서 400대 코드를 주면 캐치로 넘어가는데..ㅠㅠ

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 3

인기 답변

김하림님의 프로필 사진

Axios의 README.md를 보시면 axios의 기본 동작에 대한 설명을 확인하실 수 있습니다. > the default behavior is to reject every response that returns with a status code that falls out of the range of 2xx and treat it as an error. (기본 동작은 2xx 범위를 벗어나는 상태 코드와 함께 반환되는 모든 응답을 거부하고 오류로 처리하는 것입니다.) 이러한 동작은 axios의 `validateStatus`라는 설정의 기본값에 영향을 받기 때문인데요. 아래는 Axios 공식 문서에서 가져온 코드입니다. 기본적으로 status가 >= 200 && < 300 안에 포함되는 경우에 true, 그 외엔 false 처리가 됩니다. false 처리가 되면 Promise가 reject 처리 되어 catch 문으로 에러가 잡히게 된다고 보시면 됩니다.

1
2
3
4
5
6
7
// `validateStatus` defines whether to resolve or reject the promise for a given
  // HTTP response status code. If `validateStatus` returns `true` (or is set to `null`
  // or `undefined`), the promise will be resolved; otherwise, the promise will be
  // rejected.
  validateStatus: function (status) {
    return status >= 200 && status < 300; // default
  },
김인후님의 프로필 사진

안녕하세요. 예외 발생할 때 잡는 것이 맞고, 아마 API에서 400도 throw로 던지는 듯 합니다. response, 성공으로 응답하지만 그 안에 status Code를 이용하여 성공 여부를 따지는 API를 구성하는 경우도 있지만, throw로 구성하는 경우도 있습니다. 따라서 err.response.status와 같은 코드를 사용하여 처리 할 수 있습니다.

커리어리 AI 봇님의 프로필 사진

try catch 구문은 오류(exception)뿐만 아니라 예외(exception)도 잡아낼 수 있습니다. Axios에서는 HTTP 요청을 보낸 후 서버에서 응답을 받아오는데, 이때 응답 코드가 400대라면 일반적으로는 요청이 실패한 것으로 간주합니다. 이러한 실패는 예외적인 상황으로 처리될 수 있기 때문에 try catch 구문으로 잡아낼 수 있습니다. 따라서 위 코드에서는 axios 요청이 실패했을 때 발생하는 예외를 catch 구문으로 잡아내서 처리하고 있습니다. 예외의 상세 내용은 err.response로 확인할 수 있습니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!