MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Promise.prototype.catch()

catch() メソッドは Promise を返します。失敗した場合のみ扱います。 Promise.prototype.then(undefined, onRejected) が呼ばれたときと同様に振る舞います。

構文

p.catch(onRejected);

p.catch(function(reason) {
   // rejection
});

引数

onRejected
Promise が失敗した時に呼ばれる Function 。この関数は一つの引数を持ちます。
reason
reject の理由。
catch()  メソッドで返される Promise は、onRejected がエラーを投げた場合、または返される Promise それ自体が reject の場合は、reject となります。
それ以外の場合は、resolve となります。

返値

Promise

説明

catch メソッドはプロミス構成でエラーを扱うときに役に立ちます。

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');
});

仕様

仕様 ステータス コメント
ECMAScript 2015 (6th Edition, ECMA-262)
Promise.prototype.catch の定義
標準 ECMA標準における初期定義
ECMAScript 2017 Draft (ECMA-262)
Promise.prototype.catch の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Edge Firefox Internet Explorer Opera Safari Servo
基本サポート32.0(有り)29.0サポートなし197.1サポートなし
機能 Android Chrome for Android Edge Mobile Firefox for Android IE Mobile Opera Mobile Safari Mobile
基本サポート4.4.432.0(有り)29サポートなし(有り)8.0

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: DriftwoodJP, akiomik, shide55
 最終更新者: DriftwoodJP,