Эта статья связана с понятием Promise.
Кратко
Секция статьи "Кратко"Метод catch
используют для обработки ошибки при выполнении асинхронной операции.
Метод принимает один аргумент:
onReject
— функция-колбэк, которая будет вызвана при переходе промиса в состояние «ошибка»rejected
. Функция имеет один параметр, в который передаётся информация об ошибке
Возвращает промис.
Как пишется
Секция статьи "Как пишется"// getPasswords() — асинхронная функция, которая возвращает промисgetPasswords() .then(function (result) { // выполнится, если операция успешна }) .catch(function (err) { // колбэк выполнится, если getPassword завершится ошибкой alert(err.message) })
// getPasswords() — асинхронная функция, которая возвращает промис getPasswords() .then(function (result) { // выполнится, если операция успешна }) .catch(function (err) { // колбэк выполнится, если getPassword завершится ошибкой alert(err.message) })
Как понять
Секция статьи "Как понять"catch
выполняет переданный ему колбэк когда асинхронная операция:
- вызывает функцию
reject
внутри промиса
const rejectInSecond = new Promise(function (resolve, reject) { setTimeout(function () { reject(new Error("время истекло")) }, 1000)})rejectInSecond.catch(function (err) { console.error(err.message) // напечатает в консоль «время истекло»})
const rejectInSecond = new Promise(function (resolve, reject) { setTimeout(function () { reject(new Error("время истекло")) }, 1000) }) rejectInSecond.catch(function (err) { console.error(err.message) // напечатает в консоль «время истекло» })
- выбрасывает ошибку с помощью
throw
const throwInSecond = new Promise(function (resolve, reject) { setTimeout(function () { throw new Error("время истекло") }, 1000)})throwInSecond.catch(function (err) { console.error(err.message) // напечатает в консоль «время истекло»})
const throwInSecond = new Promise(function (resolve, reject) { setTimeout(function () { throw new Error("время истекло") }, 1000) }) throwInSecond.catch(function (err) { console.error(err.message) // напечатает в консоль «время истекло» })
🔧 Техническая деталь
Под капотом catch
содержит вызов then
, где первый колбэк установлен в undefine
: catch
→ then
.
На практике
Секция статьи "На практике"🛠 Всегда завершайте свои цепочки промисов вызовом метода catch
. Если в одной из операций в цепочке произойдёт ошибка, и она не будет обработана, то JavaScript выведет сообщение Uncaught
в консоль разработчика и перестанет работать на всей странице.