From 95aca4b4d8fa62815d4bd412fff1a364f842814a Mon Sep 17 00:00:00 2001 From: Ryan Johnson Date: Thu, 29 Apr 2021 16:16:42 -0700 Subject: remove retired locales (#699) --- .../reference/statements/throw/index.html | 198 --------------------- 1 file changed, 198 deletions(-) delete mode 100644 files/uk/web/javascript/reference/statements/throw/index.html (limited to 'files/uk/web/javascript/reference/statements/throw') diff --git a/files/uk/web/javascript/reference/statements/throw/index.html b/files/uk/web/javascript/reference/statements/throw/index.html deleted file mode 100644 index 96b8974f40..0000000000 --- a/files/uk/web/javascript/reference/statements/throw/index.html +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: throw -slug: Web/JavaScript/Reference/Statements/throw -tags: - - JavaScript - - throw - - виняток -translation_of: Web/JavaScript/Reference/Statements/throw ---- -
{{jsSidebar("Statements")}}
- -

Оператор throw викидає визначений користувачем виняток. Виконання поточної функції буде зупинено (оператори після throw не будуть виконані), а контроль буде передано до першого блоку catch у стеку викликів. Якщо жодного блоку catch не існує, виконання програми переривається.

- -
{{EmbedInteractiveExample("pages/js/statement-throw.html")}}
- - - -

Синтаксис

- -
throw expression; 
- -
-
expression
-
Вираз, що викидається.
-
- -

Опис

- -

Скористайтеся оператором throw, щоб викинути виняток. Коли викидаєте виняток, expression вказує значення винятка. Кожна з наступних команд викидає виняток:

- -
throw 'Error2'; // генерує виняток, що має рядкове значення
-throw 42;       // генерує виняток, що має значення 42
-throw true;     // генерує виняток, що має значення true
-throw new Error('Required');  // генерує об'єкт помилки з повідомленням Required
-
- -

Також зазначте, що на оператор throw впливає автоматична вставка крапки з комою (automatic semicolon insertion, ASI), оскільки між ключовим словом throw та виразом не дозволяється вставляти символи закінчення рядка.

- -

Приклади

- -

Викидання об'єкта

- -

Ви можете вказати об'єкт, коли викидаєте виняток. Після цього ви можете звертатися до властивостей об'єкта у блоці catch. Наступний приклад створює об'єкт типу UserException, і далі використовує його з оператором throw.

- -
function UserException(message) {
-   this.message = message;
-   this.name = 'UserException';
-}
-function getMonthName(mo) {
-   mo = mo - 1; // Припасувати номер місяця до індексу масиву (1 = Січ, 12 = Груд)
-   var months = ['Січ', 'Лют', 'Берез', 'Квіт', 'Трав', 'Черв', 'Лип',
-      'Серп', 'Верес', 'Жовт', 'Листоп', 'Груд'];
-   if (months[mo] !== undefined) {
-      return months[mo];
-   } else {
-      throw new UserException('InvalidMonthNo');
-   }
-}
-
-try {
-   // команди до виконання
-   var myMonth = 15; // 15 не входить у визначені межі й викликає виняток
-   var monthName = getMonthName(myMonth);
-} catch (e) {
-   monthName = 'unknown';
-   console.error(e.message, e.name); // передати об'єкт винятку до обробника помилок
-}
-
- -

Ще один приклад викидання об'єкта

- -

Наступний приклад перевіряє наданий текстовий рядок на формат поштового індексу. Якщо поштовий індекс використовує неправильний формат, оператор throw викидає виняток, створюючи об'єкт типу ZipCodeFormatException.

- -
/*
- * Створює об'єкт ZipCode.
- *
- * Дозволені формати поштового індексу:
- *    12345
- *    12345-6789
- *    123456789
- *    12345 6789
- *
- * Якщо аргумент, переданий до конструктора ZipCode, не відповідає
- * жодному з цих шаблонів, викидається виняток.
- */
-
-function ZipCode(zip) {
-   zip = new String(zip);
-   pattern = /[0-9]{5}([- ]?[0-9]{4})?/;
-   if (pattern.test(zip)) {
-      // значення поштового індексу буде першим збігом у рядку
-      this.value = zip.match(pattern)[0];
-      this.valueOf = function() {
-         return this.value
-      };
-      this.toString = function() {
-         return String(this.value)
-      };
-   } else {
-      throw new ZipCodeFormatException(zip);
-   }
-}
-
-function ZipCodeFormatException(value) {
-   this.value = value;
-   this.message = 'не відповідає очікуваному формату поштового індексу';
-   this.toString = function() {
-      return this.value + this.message;
-   };
-}
-
-/*
- * Це можна вставити у скрипт, який перевіряє дані адреси
- * на відповідність формату адрес.
- */
-
-const ZIPCODE_INVALID = -1;
-const ZIPCODE_UNKNOWN_ERROR = -2;
-
-function verifyZipCode(z) {
-   try {
-      z = new ZipCode(z);
-   } catch (e) {
-      if (e instanceof ZipCodeFormatException) {
-         return ZIPCODE_INVALID;
-      } else {
-         return ZIPCODE_UNKNOWN_ERROR;
-      }
-   }
-   return z;
-}
-
-a = verifyZipCode(95060);         // повертає 95060
-b = verifyZipCode(9560);          // повертає -1
-c = verifyZipCode('a');           // повертає -1
-d = verifyZipCode('95060');       // повертає 95060
-e = verifyZipCode('95060 1234');  // повертає 95060 1234
-
- -

Повторне викидання винятку

- -

Ви можете скористатись оператором throw, щоб повторно викинути виняток після того, як перехопите його. Наступний приклад перехоплює виняток з числовим значенням та повторно викидає його, якщо значення більше за 50. Повторно викинутий виняток спливає наверх до замикаючої функції або на верхній рівень, так, що користувач його бачить.

- -
try {
-   throw n; // викидає виняток з числовим значенням
-} catch (e) {
-   if (e <= 50) {
-      // команди для обробки винятків 1-50
-   } else {
-      // неможливо обробити цей виняток, тому викидаємо його повторно
-      throw e;
-   }
-}
-
- -

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СпецифікаціяСтатусКоментар
{{SpecName('ES3')}}{{Spec2('ES3')}}Початкове визначення. Реалізоване у JavaScript 1.4
{{SpecName('ES5.1', '#sec-12.13', 'throw statement')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-throw-statement', 'throw statement')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-throw-statement', 'throw statement')}}{{Spec2('ESDraft')}}
- -

Сумісність з веб-переглядачами

- - - -

{{Compat("javascript.statements.throw")}}

- -

Див. також

- - -- cgit v1.2.3-54-g00ecf