From 2e497fcaf490805f2ca3d91290845deb0943fb40 Mon Sep 17 00:00:00 2001 From: Andrii Hrushetskyi Date: Wed, 26 Feb 2025 21:07:06 +0100 Subject: [PATCH 1/2] fixed typos and simplified explanation **In chapter 01-11-04 promise-error-handling** Some of sentences were correct, but they were "unnatural" in Ukrainian and make understanding more difficult. --- 1-js/11-async/04-promise-error-handling/article.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/1-js/11-async/04-promise-error-handling/article.md b/1-js/11-async/04-promise-error-handling/article.md index e92e3e66d..b8fc37804 100644 --- a/1-js/11-async/04-promise-error-handling/article.md +++ b/1-js/11-async/04-promise-error-handling/article.md @@ -38,11 +38,11 @@ fetch('/article/promise-chaining/user.json') */!* ``` -Якщо все гаразд, то такий `.catch` взагалі не виконається. Але якщо будь-який з промісів буде відхилений (проблеми з мережею або некоректний json-рядок, або що завгодно інше), то помилка буде перехоплена. +Якщо все гаразд, то такий `.catch` взагалі не виконається. Але якщо будь-який з промісів буде відхилений (проблеми з мережею або некоректний json-рядок, або що-завгодно інше), то помилка буде перехоплена. ## Неявний try..catch -Навколо функції проміса та обробників знаходиться "невидимий `try..catch`". Якщо відбувається виключення, то воно перехоплюється, і проміс вважається відхиленим з цією помилкою. +Навколо функції проміса та обробників знаходиться "невидимий `try..catch`". Якщо відбувається помилка, то її перехоплюють і опрацьовують як ніби був запущений `reject`. Наприклад, цей код: @@ -66,7 +66,7 @@ new Promise((resolve, reject) => { "Невидимий `try..catch`" навколо промісу автоматично перехоплює помилку і перетворює її на відхилений проміс. -Це працює не лише у функції проміса, але і в обробниках. Якщо ми створимо виключення (`throw`) в обробнику (`.then`), то проміс вважатиметься відхиленим, і управління перейде до найближчого обробника помилок. +Це працює не лише в функцієї-"виконавцем", але і в обробниках. Якщо ми створимо помилку (`throw`) в обробнику (`.then`), то проміс вважатиметься відхиленим, і управління перейде до найближчого обробника помилок. Приклад: @@ -96,7 +96,7 @@ new Promise((resolve, reject) => { ## Прокидання помилок -Як ми вже помітили `.catch` поводиться як `try..catch`. Ми можемо мати стільки обробників `.then`, скільки ми хочемо, і потім використати один `.catch` у кінці, щоб перехопити помилки з усіх обробників. +Як ми вже помітили, `.catch` поводиться як `try..catch`. Ми можемо мати стільки обробників `.then`, скільки ми хочемо, і потім використати один `.catch` у кінці, щоб перехопити помилки з усіх обробників. У звичайному `try..catch` ми можемо проаналізувати помилку і повторно прокинути далі, якщо не можемо її обробити. Те ж саме можливе для промісів. @@ -200,6 +200,6 @@ new Promise(function() { - `.catch` перехоплює усі види помилок в промісах: будь то виклик `reject()` або помилка, кинута в обробнику за допомогою `throw`. - `.then` так само виловлює помилки, якщо надати другий аргумент (який є обробником помилок). -- Необхідно розміщувати `.catch` там, де ми хочемо обробити помилки і знаємо, як це зробити. Обробник може проаналізувати помилку (можуть бути корисні призначені для користувача класи помилок) і прокинути її, якщо нічого не знає про неї (можливо, це програмна помилка). +- Необхідно розміщувати `.catch` там, де ми хочемо обробити помилки і знаємо, як це зробити. Обробник може проаналізувати помилку (можуть бути корисними користувацькі класи помилок) і прокинути її, якщо нічого не знає про неї (можливо, це програмна помилка). - Можна і зовсім не використовувати `.catch`, якщо немає нормального способу відновитися після помилки. - У будь-якому випадку нам слід використовувати обробник події `unhandledrejection` (для браузерів і аналог для іншого оточення), щоб відстежувати необроблені помилки і інформувати про них користувача (і, можливо, наш сервер), завдяки чому наш застосунок ніколи не буде "просто помирати". From ccec3839247b92111445612483f1d92e878338fc Mon Sep 17 00:00:00 2001 From: Stanislav Dolgachov Date: Wed, 5 Mar 2025 22:25:57 +0200 Subject: [PATCH 2/2] Apply suggestions from code review --- 1-js/11-async/04-promise-error-handling/article.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1-js/11-async/04-promise-error-handling/article.md b/1-js/11-async/04-promise-error-handling/article.md index b8fc37804..060e67fc0 100644 --- a/1-js/11-async/04-promise-error-handling/article.md +++ b/1-js/11-async/04-promise-error-handling/article.md @@ -42,7 +42,7 @@ fetch('/article/promise-chaining/user.json') ## Неявний try..catch -Навколо функції проміса та обробників знаходиться "невидимий `try..catch`". Якщо відбувається помилка, то її перехоплюють і опрацьовують як ніби був запущений `reject`. +Навколо функції проміса та обробників є "невидимий `try..catch`". Якщо відбувається помилка, то її перехоплюють і опрацьовують як ніби був запущений `reject`. Наприклад, цей код: @@ -66,7 +66,7 @@ new Promise((resolve, reject) => { "Невидимий `try..catch`" навколо промісу автоматично перехоплює помилку і перетворює її на відхилений проміс. -Це працює не лише в функцієї-"виконавцем", але і в обробниках. Якщо ми створимо помилку (`throw`) в обробнику (`.then`), то проміс вважатиметься відхиленим, і управління перейде до найближчого обробника помилок. +Це працює не лише в функції, яка створює проміс, але й в обробниках. Якщо ми викинемо виключення(exception) за допомогою `throw` в обробнику (`.then`), то проміс вважатиметься відхиленим, і управління перейде до найближчого обробника помилок. Приклад: @@ -200,6 +200,6 @@ new Promise(function() { - `.catch` перехоплює усі види помилок в промісах: будь то виклик `reject()` або помилка, кинута в обробнику за допомогою `throw`. - `.then` так само виловлює помилки, якщо надати другий аргумент (який є обробником помилок). -- Необхідно розміщувати `.catch` там, де ми хочемо обробити помилки і знаємо, як це зробити. Обробник може проаналізувати помилку (можуть бути корисними користувацькі класи помилок) і прокинути її, якщо нічого не знає про неї (можливо, це програмна помилка). +- Необхідно розміщувати `.catch` там, де ми хочемо обробити помилки і знаємо, як це зробити. Обробник може проаналізувати помилку (можуть бути корисними класи помилок, створені нами спеціально під конкретну помилку) і прокинути її, якщо нічого не знає про неї (можливо, це програмна помилка). - Можна і зовсім не використовувати `.catch`, якщо немає нормального способу відновитися після помилки. - У будь-якому випадку нам слід використовувати обробник події `unhandledrejection` (для браузерів і аналог для іншого оточення), щоб відстежувати необроблені помилки і інформувати про них користувача (і, можливо, наш сервер), завдяки чому наш застосунок ніколи не буде "просто помирати".