Skip to content

Commit e54592e

Browse files
committed
changed помилка and виключення on виняток
Дослідивши це питання, дізнався, що зазвичай в технічній літературі українською exception в контексті runtime error перекладається як _виняток_
1 parent 2a57ea2 commit e54592e

1 file changed

Lines changed: 14 additions & 9 deletions

File tree

1-js/10-error-handling/1-try-catch/article.md

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ try {
5151

5252
}
5353
```
54-
- Приклад з помилкою: виводить `(1)` та `(3)`:
54+
- Приклад з помилкою: винятком `(1)` та `(3)`:
5555

5656
```js run
5757
try {
@@ -72,7 +72,7 @@ try {
7272
```
7373

7474

75-
````warn header="`try...catch` працює тільки з помилками, що виникають під час виконання скрипту"
75+
````warn header="`try...catch` працює тільки з винятками, що виникають під час виконання скрипту"
7676
Щоб блок `try...catch` спрацював, код повинен запускатися. Іншими словами, це повинен бути валідний JavaScript код.
7777

7878
Це не спрацює, якщо код містить синтаксичні помилки, як-от незакриті фігурні дужки:
@@ -87,12 +87,17 @@ try {
8787

8888
JavaScript рушій спочатку прочитує код і тільки потім виконує його. Помилки, що виникають у фазі читання називаються "помилки парсингу", вони не можуть бути обробленими і скрипти припиняють свою роботу. Це виникає через те, що рушій не може зрозуміти код.
8989

90-
Тому `try...catch` може тільки обробляти помилки, що виникають у правильному коді. Такі помилки називаються "помилки під час виконання" (runtime errors) або "виключення" (exceptions).
90+
Тому `try...catch` може тільки обробляти помилки, що виникають у правильному коді. Такі помилки називають "помилками під час виконання" (runtime errors) або "винятками" (exceptions).
91+
````
92+
93+
94+
````smart header="Нюанс перекладу"
95+
В українській мові відсутній точний відповідник англійського слова "exception". Слово "виняток" для україномовної людини здається не таким зручним і зрозумілим як слово "помилка". І тим не менш, слово помилка вживають по відношенню до всіх помилок. А для окремого підвиду помилок, конкретно для помилок, що стаються під час виконання коду, іноді використовують слово виняток. Тому коли нижче бачитимете слово "виняток", просто знайте, що мова йде про помилку.
9196
````
9297

9398

9499
````warn header="`try...catch` працює синхронно"
95-
Якщо помилка трапляється у "запланованому до виконання" коді, як от в `setTimeout`, тоді `try...catch` не зможе перехопити помилку:
100+
Якщо виняток трапляється у "запланованому до виконання" коді, як от в `setTimeout`, тоді `try...catch` не зможе перехопити помилку:
96101

97102
```js run
98103
try {
@@ -106,7 +111,7 @@ try {
106111

107112
Це відбувається через те, що функція буде виконана пізніше, коли рушій вже вийде з блоку `try...catch`.
108113

109-
Щоб перехопити помилку всередині функції запланованої до виконання, `try...catch` повинен бути всередині тієї функції:
114+
Щоб перехопити виняток всередині функції запланованої до виконання, `try...catch` повинен бути всередині тієї функції:
110115
```js run
111116
setTimeout(function() {
112117
try {
@@ -250,7 +255,7 @@ try {
250255
}
251256
```
252257

253-
В такому разі `JSON.parse` спрацює нормально і блок `catch` буде проігнорованим. Але з нашої точки зору в нас є помилка - відсутність поля `name`.
258+
В такому разі `JSON.parse` спрацює без винятків і блок `catch` буде проігнорованим. Але помилка в нас всеодно є - відсутність поля `name`.
254259

255260
Для того, щоб уніфікувати обробку помилок, ми скористаємось оператором `throw`.
256261

@@ -412,7 +417,7 @@ try {
412417
}
413418
```
414419
415-
Помилка, що виникає в рядку `(*)`, не проходить перевірку в блоці `catch` і повторно викидається. Виключення, після повторної генерації, може знову бути перехопленим конструкцією `try...catch` (якщо вона існує) або призведе до аварійного припинення роботи скрипту.
420+
Помилка, що виникає в рядку `(*)`, не проходить перевірку в блоці `catch` і повторно викидається. Виняток, після повторної генерації, може знову бути перехопленим конструкцією `try...catch` (якщо вона існує) або призведе до аварійного припинення роботи скрипту.
416421
417422
Така поведінка блоку `catch` дає змогу перехоплювати тільки ті помилки, для яких передбачено правила обробки, та "пропускати" решту типів помилок.
418423
@@ -491,7 +496,7 @@ try {
491496
492497
Блок `finally` використовується, якщо ми почали виконувати якусь роботу і хочемо завершити її в будь-якому разі.
493498
494-
Наприклад, ми хочемо виміряти час роботи функції, що рахує числа Фібоначчі. Для цього ми можемо почати вимірювання на початку виконання і закінчити після. А якщо протягом роботи функції виникне помилка? Зокрема, імплементація `fib(n)` нижче генерує помилки, якщо на вхід подано від’ємне або неціле число.
499+
Наприклад, ми хочемо виміряти час роботи функції, що рахує числа Фібоначчі. Для цього ми можемо почати вимірювання на початку виконання і закінчити після. А якщо протягом роботи функції виникне помилка? Зокрема, імплементація `fib(n)` нижче генерує винятки, якщо на вхід подано від’ємне або неціле число.
495500
496501
Конструкція `finally` -- відмінне місце для завершення вимірювання незалежно від результату.
497502
@@ -586,7 +591,7 @@ function func() {
586591
Інформація, що наведена в цій окремої секції, не є стандартом мови JavaScript.
587592
```
588593
589-
Припустимо, через помилку програміста виключення трапилося поза блоком `try...catch` і призвело до припинення роботи скрипту.
594+
Припустимо, через помилку програміста виняток трапився поза блоком `try...catch` і призвело до припинення роботи скрипту.
590595
591596
Як нам вчинити в такому випадку? Ми можемо логувати помилку, виводити повідомлення користувачу (переважно, користувачі не повинні бачити повідомлення про помилки) тощо.
592597

0 commit comments

Comments
 (0)