catch() 메서드는 Promise 반환하여 거부된 경우만 다룹니다. Promise.prototype.then(undefined, onRejected)를 호출하는 것과 동일하게 행동합니다.

구문

p.catch(onRejected);

p.catch(function(reason) {
   // 거부
});

매개변수

onRejected
Promise가 거부된 경우 호출되는 Function. 이 함수는 인수가 하나 있습니다, 거부 이유(reason).

설명

catch 메서드는 프로미스 합성(composition) 내 오류 처리에 유용할 수 있습니다.

catch 메서드 사용

var p1 = new Promise(function(resolve, reject) {
  resolve('Success');
});

p1.then(function(value) {
  console.log(value); // "Success!"
  throw 'oh, no!';
}).catch(function(e) {
  console.log(e); // "oh, no!"
}).then(function(){
  console.log('after a catch the chain is restored');
}, function () {
  console.log('Not fired due to the catch');
});

// 다음은 위와 동일하게 행동
p1.then(function(value) {
  console.log(value); // "Success!"
  return Promise.reject('oh, no!');
}).catch(function(e) {
  console.log(e); // "oh, no!"
}).then(function(){
  console.log('after a catch the chain is restored');
}, function () {
  console.log('Not fired due to the catch');
});

프로미스는 비동기 콜백 내 발생한 오류를 잡을 수 없습니다

var p1 = new Promise(function(resolve, reject) {
  throw 'Uh-oh!';
});

p1.catch(function(e) {
  console.log(e); // "Uh-oh!"
});


var p2 = new Promise(function(resolve, reject) {
  setTimeout(function() {
    throw 'Uncaught Exception!';
  }, 1000);
});

p2.catch(function(e) {
  console.log(e); // 이는 전혀 호출되지 않음
});

스펙

스펙 상태 설명
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Promise.prototype.catch' in that specification.
Standard ECMA 표준에서 초기 정의.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Promise.prototype.catch' in that specification.
Draft  

브라우저 호환성

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support32 Yes29 No198
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support4.4.432 Yes29 Yes8 Yes

 

참조

문서 태그 및 공헌자

이 페이지의 공헌자: fscholz, Netaras
최종 변경자: fscholz,