La méthode catch() renvoie un objet Promise
et ne traite que des cas où la promesse initiale est rejetée. Elle a le même effet qu'un appel à Promise.prototype.then(undefined, siRejetée)
.
Syntaxe
p.catch(siRejetée); p.catch(function(raison) { // rejet });
Paramètres
siRejetée
- Une fonction à appeler si la
Promise
est rejetée (i.e. n'est pas tenue). Cette fonction possède un argument :raison
- Une chaîne de caractères qui indique pourquoi la promesse n'est pas tenue.
Valeur de retour
Une promesse (Promise
).
Description
La méthode catch
est utile pour gérer les cas d'erreur en cas de compositions de plusieurs promesses.
Exemples
Utilisation de la méthode catch
var p1 = new Promise(function(resolve, reject) { resolve("Succès"); }); p1.then(function(value) { console.log(value); // "Succès!" throw "zut !"; }).catch(function(e) { console.log(e); // "zut !" }).then(function(e) { console.log('après le catch, la chaîne est restaurée'); }); // Le code qui suit est équivalent : p1.then(function(value) { console.log(value); // "Succès!" return Promise.reject('zut !'); }).catch(function(e) { console.log(e); // "zut !" }).then(function(e){ console.log('après le catch, la chaîne est restaurée'); });
Les promesses n'interceptent pas les exceptions levées de façon asynchrone
var p1 = new Promise(function(resolve, reject) { throw 'Oh oh!'; }); p1.catch(function(e) { console.log(e); // "Oh oh!" }); var p2 = new Promise(function(resolve, reject) { setTimeout(function() { throw 'Exception invisible !'; }, 1000); }); p2.catch(function(e) { console.log(e); // Cela n'est jamais appelé });
Spécifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Promise.prototype.catch' dans cette spécification. |
Standard | Définition initiale au sein d'un standard ECMA. |
ECMAScript 2017 Draft (ECMA-262) La définition de 'Promise.prototype.catch' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Pour contribuer à ces données de compatibilité, vous pouvez envoyer une poule requête sur : https://github.com/mdn/browser-compat-data/blob/master/javascript/promise.json.
Fonctionnalité | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Servo |
---|---|---|---|---|---|---|---|
Support simple | 32.0 | (Oui) | 29.0 | Aucun support | 19 | 7.1 | Aucun support |
Fonctionnalité | Android | Chrome for Android | Edge Mobile | Firefox for Android | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Support simple | 4.4.4 | 32.0 | (Oui) | 29 | Aucun support | (Oui) | 8.0 |