Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Метод catch() возвращает Promise(обещание) и работает только в случае отклонения обещания. Ведет себя аналогично вызову Promise.prototype.then(undefined, onRejected).

Syntax

p.catch(onRejected);

p.catch(function(reason) {
   // отказ
});

Параметры

onRejected
Function вызывается когда обещание отклонено. У этой функции один аргумент:
reason
Причина отказа.

Promise( Обещание ), возвращенное catch (), отклоняется, если onRejected выдает ошибку(throw) или возвращает Promise, который был отклонен; В противном случае Promise, возвращаемый catch () имеет статус  выполнено  (fulfilled)

Возвращаемое значение

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) {
  // Функция не перевыбросила исключение 'e'
  // в результате произойдёт resolve(undefined)
  // для Promise, возвращённого функцией catch
  console.log(e); // "oh, no!"
}).then(function(){
  console.log('after a catch the chain is restored');
}, function () {
  // Функция не перевыбросила исключение 'e'
  // в результате произойдёт resolve(undefined)
  // для Promise, возвращённого функцией catch
  console.log('Not fired due to the catch');
});

// Следующий код ведет себя также, как вышенаписанный
p1.then(function(value) {
  console.log(value); // "Success!"
  return Promise.reject('oh, no!');
}).catch(function(e) {
  // Функция не перевыбросила исключение 'e'
  // в результате произойдёт resolve(undefined)
  // для Promise, возвращённого функцией catch
  console.log(e); // "oh, no!"
}).then(function(){
  console.log('after a catch the chain is restored');
}, function () {
  // Функция не перевыбросила исключение 'e'
  // в результате произойдёт resolve(undefined)
  // для Promise, возвращённого функцией catch
  console.log('Not fired due to the catch');
});

Ловим выброшеные исключения

// Выкидываемая ошибка вызовет метод catch 
var p1 = new Promise(function(resolve, reject) {
  throw 'Uh-oh!';
});

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

// Ошибки выброшеные из асинхронных функций не будут пойманы методом catch
var p2 = new Promise(function(resolve, reject) {
  setTimeout(function() {
    throw 'Uncaught Exception!';
  }, 1000);
});

p2.catch(function(e) {
  console.log(e); // Никогда не вызовется
});

// Ошибки выброшеные после выполнения обещания будут проигнорированны
var p3 = new Promise(function(resolve, reject) {
  resolve();
  throw 'Silenced Exception!';
});

p3.catch(function(e) {
   console.log(e); // Никогда не вызовется
});

Спецификации

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Promise.prototype.catch' в этой спецификации.
Стандарт Initial definition in an ECMA standard.
ECMAScript Latest Draft (ECMA-262)
Определение 'Promise.prototype.catch' в этой спецификации.
Черновик  

Совместимость с браузерами

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidEdge MobileFirefox для AndroidOpera для AndroidiOS SafariSamsung InternetNode.js
Базовая поддержкаChrome Полная поддержка 32Edge Полная поддержка ДаFirefox Полная поддержка 29IE Нет поддержки НетOpera Полная поддержка 19Safari Полная поддержка 8WebView Android Полная поддержка 4.4.3Chrome Android Полная поддержка 32Edge Mobile Полная поддержка ДаFirefox Android Полная поддержка 29Opera Android Полная поддержка ДаSafari iOS Полная поддержка 8Samsung Internet Android Полная поддержка Даnodejs Полная поддержка 0.12

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки

Смотри также

Метки документа и участники

Внесли вклад в эту страницу: IgorCH, tirli, vitya-ne, torbasow, sergey-shambir, LopatkinEvgeniy, AlexKhram
Обновлялась последний раз: IgorCH,