October 23, 2020
에러 처리 방법에는 다음과 같이 2가지 방법이 있다.
then()
의 두 번째 인자로 에러를 처리하는 방법save().then(
handleSuccess,
handleError
);
catch()
를 이용하는 방법save().then().catch();
위 2가지 방법 모두 프로미스의 reject()
메서드가 호출되어 실패 상태가 된 경우에 실행된다.
하지만, 만약에 handleSuccess()
가 에러를 던지면 어떻게 될까? .then()
에서 반환된 프로미스는 rejected 되지만, rejection을 catch할 수 있는 방법이 없다.
save()
작업에서 발생하는 오류는 catch가 되지만 handleSuccess()
함수에서 발생하는 오류는 잡을 수 없다.
두 번째 예제에서 .catch()
는 save()
또는 handleSuccess()
의 rejections을 처리한다.
또한 이런 방식으로 처리해줄 수도 있다.
save()
.then(
handleSuccess,
handleNetworkError
)
.catch(handleProgrammerError);
참조 및 출처