From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../global_objects/error/columnnumber/index.html | 44 +++++ .../global_objects/error/error/index.html | 63 ++++++ .../global_objects/error/filename/index.html | 47 +++++ .../reference/global_objects/error/index.html | 216 +++++++++++++++++++++ .../global_objects/error/linenumber/index.html | 56 ++++++ .../global_objects/error/message/index.html | 57 ++++++ .../reference/global_objects/error/name/index.html | 57 ++++++ .../global_objects/error/prototype/index.html | 114 +++++++++++ .../global_objects/error/stack/index.html | 125 ++++++++++++ .../global_objects/error/tosource/index.html | 59 ++++++ .../global_objects/error/tostring/index.html | 98 ++++++++++ 11 files changed, 936 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/error/columnnumber/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/error/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/filename/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/linenumber/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/message/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/name/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/prototype/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/stack/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/tosource/index.html create mode 100644 files/uk/web/javascript/reference/global_objects/error/tostring/index.html (limited to 'files/uk/web/javascript/reference/global_objects/error') diff --git a/files/uk/web/javascript/reference/global_objects/error/columnnumber/index.html b/files/uk/web/javascript/reference/global_objects/error/columnnumber/index.html new file mode 100644 index 0000000000..966facf100 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/columnnumber/index.html @@ -0,0 +1,44 @@ +--- +title: Error.prototype.columnNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/columnNumber +tags: + - Error + - JavaScript + - Властивість + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/Error/columnNumber +--- +
{{JSRef}} {{non-standard_header}}
+ +

Властивість columnNumber містить номер стовпця у рядку файла, який спричинив помилку.

+ +

Приклади

+ +

Використання columnNumber

+ +
var e = new Error('Could not parse input');
+throw e;
+console.log(e.columnNumber) // 0
+
+ +

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

+ +

Не є частиною жодних специфікацій. Нестандартна властивість.

+ +

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

+ +
+
+ + +

{{Compat("javascript.builtins.Error.columnNumber")}}

+
+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/error/index.html b/files/uk/web/javascript/reference/global_objects/error/error/index.html new file mode 100644 index 0000000000..4f16905d5a --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/error/index.html @@ -0,0 +1,63 @@ +--- +title: Конструктор Error() +slug: Web/JavaScript/Reference/Global_Objects/Error/Error +translation_of: Web/JavaScript/Reference/Global_Objects/Error/Error +--- +
{{JSRef}}
+ +

Конструктор Error створює об'єкт помилки.

+ +

Синтаксис

+ +
new Error([message[, fileName[, lineNumber]]])
+ +

Параметри

+ +
+
message{{Optional_Inline}}
+
Зрозумілий людині опис помилки.
+
fileName {{Non-standard_Inline}}{{Optional_Inline}}
+
Значення властивості fileName створеного об'єкта Error. За замовчуванням містить ім'я файлу, код з якого запустив конструктор Error().
+
lineNumber {{Non-standard_Inline}}{{Optional_Inline}}
+
Значення властивості lineNumber створеного об'єкта Error. За замовчуванням містить номер рядка, де відбувся виклик конструктора Error().
+
+ +

Опис

+ +

Коли Error використовується як функція -- без  {{JSxRef("Operators/new", "new")}}, він повертає об'єкт Error. Таким чином, простий виклик Error матиме той самий результат, що й конструювання об'єкта Error через ключове слово new.

+ +
// це...
+const x = Error('Я був створений викликом функції!')
+
+​​​​// ...має ту саму функціональність, що й це:
+const y = new Error('Я був зконструйований ключовим словом "new"!')
+ +

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

+ + + + + + + + + + + + +
Специфікація
{{SpecName('ESDraft', '#sec-error-constructor', 'Error constructor')}}
+ +

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

+ +
+ + +

{{Compat("javascript.builtins.Error.Error")}}

+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/filename/index.html b/files/uk/web/javascript/reference/global_objects/error/filename/index.html new file mode 100644 index 0000000000..046a345326 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/filename/index.html @@ -0,0 +1,47 @@ +--- +title: Error.prototype.fileName +slug: Web/JavaScript/Reference/Global_Objects/Error/fileName +tags: + - Error + - JavaScript + - Властивість +translation_of: Web/JavaScript/Reference/Global_Objects/Error/fileName +--- +
{{JSRef}} {{non-standard_header}}
+ +

Властивість fileName містить шлях до файлу, який спричинив помилку.

+ +

Опис

+ +

Ця нестандартна властивість містить шлях до файлу, який спричинив дану помилку. При виклику в контексті відладчика, наприклад, у інструментах розробника Firefox, повертається "debugger eval code".

+ +

Приклади

+ +

Використання fileName

+ +
var e = new Error('Could not parse input');
+throw e;
+// e.fileName може виглядати як "file:///C:/example.html"
+
+ +

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

+ +

Не є частиною жодних специфікацій. Нестандартна властивість.

+ +

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

+ +
+
+ + +

{{Compat("javascript.builtins.Error.fileName")}}

+
+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/index.html b/files/uk/web/javascript/reference/global_objects/error/index.html new file mode 100644 index 0000000000..9df5ca1354 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/index.html @@ -0,0 +1,216 @@ +--- +title: Error +slug: Web/JavaScript/Reference/Global_Objects/Error +tags: + - Error + - JavaScript + - помилка +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +
{{JSRef}}
+ +

Об'єкти Error викидаються, коли виникає помилка виконання. Об'єкт Error також можна використовувати як базовий об'єкт для винятків, створених користувачем. Дивіться нижче стандартні вбудовані типи помилок.

+ +

Опис

+ +

Помилки виконання спричиняють створення й викидання нових об'єктів Error.

+ +

Типи помилок

+ +

Окрім загального конструктора Error, у JavaScript існують сім інших базових конструкторів помилок. Щодо обробки винятків на боці клієнта, дивіться розділ Оператори обробки винятків.

+ +
+
{{jsxref("EvalError")}}
+
Створює екземпляр помилки, що виникає під час використання глобальної функції {{jsxref("eval", "eval()")}}.
+
{{jsxref("InternalError")}} {{non-standard_inline}}
+
Створює екземпляр помилки, що виникає, коли викидається внутрішня помилка рушія JavaScript. Наприклад, "too much recursion".
+
{{jsxref("RangeError")}}
+
Створює екземпляр помилки, що виникає, коли значення чисельної змінної або параметра знаходиться поза межами дозволеного діапазону.
+
{{jsxref("ReferenceError")}}
+
Створює екземпляр помилки, що виникає при зверненні за недійсним посиланням.
+
{{jsxref("SyntaxError")}}
+
Створює екземпляр синтаксичної помилки, яка виникає під час аналізу коду у {{jsxref("eval", "eval()")}}.
+
{{jsxref("TypeError")}}
+
Створює екземпляр помилки, що виникає при використанні змінної або параметра невідповідного типу.
+
{{jsxref("URIError")}}
+
Створює екземпляр помилки, що виникає, коли до {{jsxref("encodeURI", "encodeURI()")}} або {{jsxref("decodeURI", "decodeURI()")}} передаються неправильні параметри.
+
+ +

Конструктор

+ +
+
Error()
+
Створює об'єкти Error.
+
+ +

Властивості

+ +
+
Error.prototype
+
Дозволяє додавати властивості до екземплярів Error.
+
+ +

Методи

+ +

Глобальний об'єкт Error не має власних методів, однак, він успадковує деякі методи через ланцюжок прототипів.

+ +

Нестандартні методи

+ +

{{Non-standard_Header}}

+ +
+
{{JSxRef("Error.captureStackTrace()")}} {{Non-standard_Inline}}
+
Функція V8, яка створює властивість {{JSxRef("Error.prototype.stack", "stack")}} на екземплярі Error.
+
+ +

Екземпляри Error

+ +
{{page('uk/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Опис')}}
+ +

Властивості

+ +
{{page('/uk/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Властивості')}}
+ +

Методи

+ +
{{page('uk/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Методи')}}
+ +

Приклади

+ +

Викидання загальної помилки

+ +

Зазвичай ви створюєте об'єкт Error для того, щоб викинути його з допомогою ключового слова {{jsxref("Statements/throw", "throw")}}. Ви можете обробити помилку, використовуючи конструкцію {{jsxref("Statements/try...catch", "try...catch")}}:

+ +
try {
+  throw new Error('Ой-ой!');
+} catch (e) {
+  console.error(e.name + ': ' + e.message);
+}
+
+ +

Обробка специфічної помилки

+ +

Ви можете обробляти лише окремі типи помилок, перевіряючи тип помилки з допомогою властивості {{jsxref("Object.prototype.constructor", "constructor")}} або, якщо ви пишете для сучасних рушіїв JavaScript, ключовим словом {{jsxref("Operators/instanceof", "instanceof")}}:

+ +
try {
+  foo.bar();
+} catch (e) {
+  if (e instanceof EvalError) {
+    console.error(e.name + ': ' + e.message);
+  } else if (e instanceof RangeError) {
+    console.error(e.name + ': ' + e.message);
+  }
+  // ... і т.д.
+}
+
+ +

Користувацькі типи помилок

+ +

Ви, можливо, захочете визначити свої власні типи помилок, успадкувавши їх від Error, щоб мати можливість викидати новий об'єкт помилки через throw new MyError() та використовувати instanceof MyError для перевірки типу помилки у обробнику винятків. В результаті отримуємо більш чистий та послідовний код обробки помилок. 

+ +

Дивіться всебічну дискусію "What's a good way to extend Error in JavaScript?" на StackOverflow.

+ +

Користувацький клас помилки у ES6

+ +
+

Babel до 7-ї версії може працювати з методами класу CustomError, але тільки якщо вони оголошені через  Object.defineProperty(). Інакше старі версії Babel та інші транспілятори не зможуть коректно обробити наступний код без додаткових налаштувань.

+
+ +
+

Деякі веб-переглядачі включають конструктор CustomError у трасування стеку при використанні класів ES2015.

+
+ +
class CustomError extends Error {
+  constructor(foo = 'bar', ...params) {
+    // Передати залишкові параметри (в тому числі параметри розробника) до батьківського конструктора
+    super(...params)
+
+    // Підтримує правильне трасування стеку в точці, де була викинута помилка (працює лише на V8)
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, CustomError);
+    }
+
+    this.name = 'CustomError'
+    // Користувацька інформація для налагодження
+    this.foo = foo
+    this.date = new Date()
+  }
+}
+
+try {
+  throw new CustomError('baz', 'bazMessage')
+} catch(e) {
+  console.error(e.name)    //CustomError
+  console.error(e.foo)     //baz
+  console.error(e.message) //bazMessage
+  console.error(e.stack)   //stacktrace
+}
+ +

Користувацький об'єкт помилки у ES5

+ +
+

Всі веб-переглядачі включають конструктор CustomError у трасування стеку при використанні прототипного оголошення.

+
+ +
function CustomError(foo, message, fileName, lineNumber) {
+  var instance = new Error(message, fileName, lineNumber);
+  instance.name = 'CustomError';
+  instance.foo = foo;
+  Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
+  if (Error.captureStackTrace) {
+    Error.captureStackTrace(instance, CustomError);
+  }
+  return instance;
+}
+
+CustomError.prototype = Object.create(Error.prototype, {
+  constructor: {
+    value: Error,
+    enumerable: false,
+    writable: true,
+    configurable: true
+  }
+});
+
+if (Object.setPrototypeOf){
+  Object.setPrototypeOf(CustomError, Error);
+} else {
+  CustomError.__proto__ = Error;
+}
+
+
+try {
+  throw new CustomError('baz', 'bazMessage');
+} catch(e){
+  console.error(e.name); //CustomError
+  console.error(e.foo); //baz
+  console.error(e.message); //bazMessage
+}
+ +

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

+ + + + + + + + + + +
Специфікація
{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}
+ +

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

+ +
+ + +

{{Compat("javascript.builtins.Error")}}

+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/linenumber/index.html b/files/uk/web/javascript/reference/global_objects/error/linenumber/index.html new file mode 100644 index 0000000000..e539638c46 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/linenumber/index.html @@ -0,0 +1,56 @@ +--- +title: Error.prototype.lineNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +tags: + - Error + - JavaScript + - Prototype + - Властивість + - помилка +translation_of: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +--- +
{{JSRef}} {{non-standard_header}}
+ +

Властивість lineNumber містить номер рядка у файлі, що спричинив помилку.

+ +

Приклади

+ +

Використання lineNumber

+ +
var e = new Error('Could not parse input');
+throw e;
+console.log(e.lineNumber) // 2
+
+ +

Альтернативний приклад використання події error 

+ +
window.addEventListener('error', function(e) {
+  console.log(e.lineNumber); // 5
+});
+var e = new Error('Could not parse input');
+throw e;
+
+ +

Це нестандартна властивість, їй бракує всебічної підтримки. Дивіться таблицю сумісності з браузерами нижче.

+ +

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

+ +

Не є частиною жодних специфікацій. Нестандартна властивість.

+ +

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

+ +
+
+ + +

{{Compat("javascript.builtins.Error.lineNumber")}}

+
+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/message/index.html b/files/uk/web/javascript/reference/global_objects/error/message/index.html new file mode 100644 index 0000000000..318f8eb532 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/message/index.html @@ -0,0 +1,57 @@ +--- +title: Error.prototype.message +slug: Web/JavaScript/Reference/Global_Objects/Error/message +tags: + - Error + - JavaScript + - Властивість +translation_of: Web/JavaScript/Reference/Global_Objects/Error/message +--- +
{{JSRef}}
+ +

Властивість message - це зрозумілий людині опис помилки.

+ +

Опис

+ +

Ця властивість містить стислий опис помилки, якщо він був наданий. Рушій SpiderMonkey активно використовує властивість message для винятків. Властивість message у поєднанні з властивістю {{jsxref("Error.prototype.name", "name")}} використовується методом {{jsxref("Error.prototype.toString()")}} для створення рядкового представлення помилки.

+ +

За замовчуванням, властивість message є порожнім рядком, але ця поведінка може бути заміщена, наприклад, передачею повідомлення першим аргументом у {{jsxref("Error", "конструктор Error")}}.

+ +

Приклади

+ +

Викидання користувацької помилки

+ +
var e = new Error('Could not parse input');
+// e.message дорівнює 'Could not parse input'
+throw e;
+
+ +

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

+ + + + + + + + + + +
Специфікація
{{SpecName('ESDraft', '#sec-error.prototype.message', 'Error.prototype.message')}}
+ +

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

+ +
+
+ + +

{{Compat("javascript.builtins.Error.message")}}

+
+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/name/index.html b/files/uk/web/javascript/reference/global_objects/error/name/index.html new file mode 100644 index 0000000000..bf868bf365 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/name/index.html @@ -0,0 +1,57 @@ +--- +title: Error.prototype.name +slug: Web/JavaScript/Reference/Global_Objects/Error/name +tags: + - Error + - JavaScript + - Властивість +translation_of: Web/JavaScript/Reference/Global_Objects/Error/name +--- +
{{JSRef}}
+ +

Властивість name містить ім'я типу помилки. Початкове значення дорівнює "Error".

+ +

Опис

+ +

За замовчуванням екземплярам {{jsxref("Error")}} надається ім'я "Error". Властивість name, на додаток до властивості {{jsxref("Error.prototype.message", "message")}}, використовується методом {{jsxref("Error.prototype.toString()")}} для створення рядкового представлення помилки.

+ +

Приклади

+ +

Викидання користувацької помилки

+ +
var e = new Error('Malformed input'); // e.name дорівнює 'Error'
+
+e.name = 'ParseError';
+throw e;
+// e.toString() поверне 'ParseError: Malformed input'
+
+ +

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

+ + + + + + + + + + +
Специфікація
{{SpecName('ESDraft', '#sec-error.prototype.name', 'Error.prototype.name')}}
+ +

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

+ +
+
+ + +

{{Compat("javascript.builtins.Error.name")}}

+
+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/prototype/index.html b/files/uk/web/javascript/reference/global_objects/error/prototype/index.html new file mode 100644 index 0000000000..64c7b5eff5 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/prototype/index.html @@ -0,0 +1,114 @@ +--- +title: Error.prototype +slug: Web/JavaScript/Reference/Global_Objects/Error/prototype +tags: + - Error + - JavaScript + - Властивість + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +
{{JSRef}}
+ +

Властивість Error.prototype є прототипом для конструктора {{jsxref("Error")}}.

+ +
{{js_property_attributes(0, 0, 0)}}
+ +

Опис

+ +

Всі екземпляри {{jsxref("Error")}} та екземпляри {{jsxref("Global_Objects/Error", "базових конструкторів помилок", "#Типи_помилок", 1)}} успадковуються від Error.prototype. Як в усіх функціях-конструкторах, ви можете використовувати прототип конструктора, щоб додавати властивості чи методи до усіх екземплярів, створених цим конструктором. 

+ +

Властивості

+ +

Стандартні властивості

+ +
+
Error.prototype.constructor
+
Функція, яка створила прототип екземпляра.
+
{{jsxref("Error.prototype.message")}}
+
Повідомлення помилки.
+
{{jsxref("Error.prototype.name")}}
+
Ім'я помилки.
+
+ +

Спеціальні розширення

+ +

{{non-standard_header}}

+ +

Microsoft

+ +
+
Error.description
+
Опис помилки. Властивість схожа на {{jsxref("Error.prototype.message", "message")}}.
+
Error.number
+
Номер помилки.
+
+ +

Mozilla

+ +
+
{{jsxref("Error.prototype.fileName")}}
+
Шлях до файлу, що спричинив помилку.
+
{{jsxref("Error.prototype.lineNumber")}}
+
Номер рядка у файлі, що спричинив помилку.
+
{{jsxref("Error.prototype.columnNumber")}}
+
Номер стовпця у файлі, де виникла помилка.
+
{{jsxref("Error.prototype.stack")}}
+
Трасування стеку.
+
+ +

Методи

+ +
+
{{jsxref("Error.prototype.toSource()")}} {{non-standard_inline}}
+
Повертає рядок з кодом, що спричинить створення заданого об'єкта {{jsxref("Error")}}; ви можете використати це значення, щоб створити новий об'єкт. Заміщує метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Error.prototype.toString()")}}
+
Повертає рядок, що представляє заданий об'єкт. Заміщує метод {{jsxref("Object.prototype.toString()")}}.
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецифікаціяСтатусКоментар
{{SpecName('ES1')}}{{Spec2('ES1')}}Початкове визначення Реалізовано у JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.11.3.1', 'Error')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-error.prototype', 'Error')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-error.prototype', 'Error')}}{{Spec2('ESDraft')}}
+ +

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

+ +
+ + +

{{Compat("javascript.builtins.Error.prototype")}}

+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/stack/index.html b/files/uk/web/javascript/reference/global_objects/error/stack/index.html new file mode 100644 index 0000000000..04bb1ff642 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/stack/index.html @@ -0,0 +1,125 @@ +--- +title: Error.prototype.stack +slug: Web/JavaScript/Reference/Global_Objects/Error/Stack +tags: + - Error + - JavaScript + - Prototype + - Властивість + - нестандартна +translation_of: Web/JavaScript/Reference/Global_Objects/Error/Stack +--- +
{{JSRef}} {{non-standard_header}}
+ +

Нестандартна властивість stack об'єктів {{jsxref("Error")}} надає звіт про те, які функції були викликані, в якому порядку, з якого рядка файлу та з якими аргументами. Текстовий рядок стеку ведеться з останніх викликів до більш ранніх, і аж до початкового виклику у глобальній області видимості.

+ +

Опис

+ +

Кожний крок буде відокремлений новим рядком, де перша частина є іменем функції (якщо це не виклик з глобальної області видимості), далі через символ (@) розташування файлу (окрім випадку, коли функція є конструктором помилки під час викидання помилки), двокрапка та, якщо доступне розташування файлу, номер рядка. (Зауважте, що об'єкт {{jsxref("Error")}} також має властивості fileName, lineNumber та columnNumber для отримання цієї інформації про помилку, що викидається (але тільки про помилку, а не стек її викликів).)

+ +

Зауважте, що це формат, який використовується у Firefox. Не існує стандартного формату. Однак, Safari 6+ та Opera 12- використовують дуже схожий формат. Переглядачі на рушії JavaScript V8 (такі, як Chrome, Opera 15+, Android Browser) та IE10+, з іншого боку, використовують інший формат (дивіться архів документів MSDN щодо error.stack).

+ +

Значення аргументів у стеку: До версії Firefox 14 після імені функції були б записані значення аргументів, перетворені у рядок, у круглих дужках, одразу перед знаком (@). І якщо об'єкти (або масиви) були б виведені у вигляді "[object Object]", і, таким чином, не могли бути перетворені назад у справжні об'єкти, то скалярні величини можна відновити (хоча, можливо — це досі доступно у Firefox 14 — легше використовувати arguments.callee.caller.arguments, а ім'я функції можна отримати через arguments.callee.caller.name). "undefined" записується як "(void 0)". Зауважте, що, якщо рядкові аргументи були передані з такими символами як "@", "(", ")" (або вони присутні в іменах файлів), на них не можна покладатись для розбиття рядка на окремі частини. Таким чином, у Firefox 14 та пізніших версіях це вже не є такою проблемою.

+ +

Різні веб-переглядачі встановлюють це значення в різні моменти. Наприклад, Firefox встановлює його при створенні об'єкта {{jsxref("Error")}}, в той час як PhantomJS встановлює його лише при викиданні об'єкта {{jsxref("Error")}}, а реалізація у архівних документах MSDN, схоже, співпадає з PhantomJS.

+ +

Приклад

+ +

Наступна HTML-розмітка демонструє використання властивості stack .

+ +
<!DOCTYPE HTML>
+<meta charset="UTF-8">
+<title>Приклад трасування стеку</title>
+<body>
+<script>
+function trace() {
+  try {
+    throw new Error('myError');
+  }
+  catch(e) {
+    alert(e.stack);
+  }
+}
+function b() {
+  trace();
+}
+function a() {
+  b(3, 4, '\n\n', undefined, {});
+}
+a('перший виклик, першийАргумент');
+</script>
+
+ +

За умови, що наведена розмітка збережена як C:\example.html у файловій системі Windows, вона створить діалогове вікно оповіщення з наступним текстом:

+ +

Firefox 30 та новіші містять номер стовпця:

+ +
trace@file:///C:/example.html:9:17
+b@file:///C:/example.html:16:13
+a@file:///C:/example.html:19:13
+@file:///C:/example.html:21:9
+ +

З Firefox 14 по Firefox 29:

+ +
trace@file:///C:/example.html:9
+b@file:///C:/example.html:16
+a@file:///C:/example.html:19
+@file:///C:/example.html:21
+ +

Firefox 13 та старші натомість виведуть наступний текст:

+ +
Error("myError")@:0
+trace()@file:///C:/example.html:9
+b(3,4,"\n\n",(void 0),[object Object])@file:///C:/example.html:16
+a("перший виклик, першийАргумент")@file:///C:/example.html:19
+@file:///C:/example.html:21
+ +

Стек коду у eval() та Function()

+ +

Починаючи з Firefox 30, стек помилки коду у викликах Function() та eval() тепер створює звіти з більш детальною інформацією щодо номеру рядків та стовпчиків у цих викликах. Виклики Function позначаються записом "> Function", а виклики eval записом "> eval".

+ +
try {
+  new Function('throw new Error()')();
+} catch (e) {
+  console.log(e.stack);
+}
+
+// anonymous@file:///C:/example.html line 7 > Function:1:1
+// @file:///C:/example.html:7:6
+
+
+try {
+  eval("eval('FAIL')");
+} catch (x) {
+  console.log(x.stack);
+}
+
+// @file:///C:/example.html line 7 > eval line 1 > eval:1:1
+// @file:///C:/example.html line 7 > eval:1:1
+// @file:///C:/example.html:7:6
+
+ +

Ви також можете скористатися директивою //# sourceURL, щоб присвоїти ім'я коду, що передається. Дивіться також Відладка коду у eval() та Function() у статтях на сторінці Debugger, а також цей пост.

+ +

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

+ +

Не є частиною жодних специфікацій. Нестандартна властивість.

+ +

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

+ +
+
+ + +

{{Compat("javascript.builtins.Error.stack")}}

+
+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/tosource/index.html b/files/uk/web/javascript/reference/global_objects/error/tosource/index.html new file mode 100644 index 0000000000..7c86a836c7 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/tosource/index.html @@ -0,0 +1,59 @@ +--- +title: Error.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Error/toSource +tags: + - Error + - JavaScript + - Prototype + - метод + - помилка +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

Метод toSource() повертає код, який може створити таку саму помилку.

+ +

Синтаксис

+ +
e.toSource()
+ +

Значення, яке повертається

+ +

Текстовий рядок з кодом, що викликає помилку.

+ +

Опис

+ +

Виклик методу toSource екземпляра {{jsxref("Error")}} (або інших базових типів) поверне текстовий рядок з кодом для створення помилки. Цей рядок може бути обчислений для створення (приблизно) такого самого об'єкта. Звісно, рядок з кодом відповідає структурі конструктора {{jsxref("Error")}}. Для прикладу:

+ +
(newname(message ,fileName,lineNumber))
+
+ +

де наведені атрибути відповідають аналогічним властивостям екземпляра помилки.

+ +
+

Примітка: Зауважте, що властивості, які використовуються методом toSource при створенні текстового рядка, можуть змінюватися і не точно відображатимуть функцію, що використовувалась для створення екземпляра помилки, або ім'я файлу, або номер рядка, де виникла помилка.

+
+ +

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

+ +

Не є частиною жодних специфікацій. Реалізовано у JavaScript 1.3.

+ +

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

+ +
+
+ + +

{{Compat("javascript.builtins.Error.toSource")}}

+
+
+ +

Див. також

+ + diff --git a/files/uk/web/javascript/reference/global_objects/error/tostring/index.html b/files/uk/web/javascript/reference/global_objects/error/tostring/index.html new file mode 100644 index 0000000000..f8e12300e8 --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/error/tostring/index.html @@ -0,0 +1,98 @@ +--- +title: Error.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Error/toString +tags: + - Error + - JavaScript + - метод + - помилка + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toString +--- +
{{JSRef}}
+ +

Метод toString() повертає текстовий рядок, що представляє заданий об'єкт {{jsxref("Error")}}.

+ +

Синтаксис

+ +
e.toString()
+ +

Значення, яке повертається

+ +

Текстовий рядок, що представляє об'єкт {{jsxref("Error")}}.

+ +

Опис

+ +

Об'єкт {{jsxref("Error")}} заміщує метод {{jsxref("Object.prototype.toString()")}}, що успадковується усіма об'єктами. Його семантика наступна (за умови, що {{jsxref("Object")}} та {{jsxref("String")}} мають свої початкові значення):

+ +
Error.prototype.toString = function() {
+  'use strict';
+
+  var obj = Object(this);
+  if (obj !== this) {
+    throw new TypeError();
+  }
+
+  var name = this.name;
+  name = (name === undefined) ? 'Error' : String(name);
+
+  var msg = this.message;
+  msg = (msg === undefined) ? '' : String(msg);
+
+  if (name === '') {
+    return msg;
+  }
+  if (msg === '') {
+    return name;
+  }
+
+  return name + ': ' + msg;
+};
+
+ +

Приклади

+ +
var e = new Error('fatal error');
+console.log(e.toString()); // 'Error: fatal error'
+
+e.name = undefined;
+console.log(e.toString()); // 'Error: fatal error'
+
+e.name = '';
+console.log(e.toString()); // 'fatal error'
+
+e.message = undefined;
+console.log(e.toString()); // ''
+
+e.name = 'привіт';
+console.log(e.toString()); // 'привіт'
+
+ +

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

+ + + + + + + + + + +
Специфікація
{{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}
+ +

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

+ +
+
+ + +

{{Compat("javascript.builtins.Error.toString")}}

+
+
+ +

Див. також

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