diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:43:23 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:43:23 -0500 |
commit | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (patch) | |
tree | a9ef8ac1e1b8fe4207b6d64d3841bfb8990b6fd0 /files/uk/web/javascript/reference/global_objects/error | |
parent | 074785cea106179cb3305637055ab0a009ca74f2 (diff) | |
download | translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.gz translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.bz2 translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.zip |
initial commit
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/error')
11 files changed, 936 insertions, 0 deletions
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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>Властивість <code><strong>columnNumber</strong></code> містить номер стовпця у рядку файла, який спричинив помилку.</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Використання_columnNumber">Використання <code>columnNumber</code></h3> + +<pre class="brush: js">var e = new Error('Could not parse input'); +throw e; +console.log(e.columnNumber) // 0 +</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<p>Не є частиною жодних специфікацій. Нестандартна властивість.</p> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Error.columnNumber")}}</p> +</div> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Error.prototype.stack")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.fileName")}} {{non-standard_inline}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p><span class="seoSummary">Конструктор <strong><code>Error</code></strong> створює об'єкт помилки.</span></p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new Error([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre> + +<h3 id="Параметри">Параметри</h3> + +<dl> + <dt><code><var>message</var></code>{{Optional_Inline}}</dt> + <dd>Зрозумілий людині опис помилки.</dd> + <dt><code><var>fileName</var></code> {{Non-standard_Inline}}{{Optional_Inline}}</dt> + <dd>Значення властивості <code><var>fileName</var></code> створеного об'єкта <code>Error</code>. За замовчуванням містить ім'я файлу, код з якого запустив конструктор <code>Error()</code>.</dd> + <dt><code><var>lineNumber</var></code> {{Non-standard_Inline}}{{Optional_Inline}}</dt> + <dd>Значення властивості <code><var>lineNumber</var></code> створеного об'єкта <code>Error</code>. За замовчуванням містить номер рядка, де відбувся виклик конструктора <code>Error()</code>.</dd> +</dl> + +<h2 id="Опис">Опис</h2> + +<p>Коли <code>Error</code> використовується як функція -- без {{JSxRef("Operators/new", "new")}}, він повертає об'єкт <code>Error</code>. Таким чином, простий виклик <code>Error</code> матиме той самий результат, що й конструювання об'єкта <code>Error</code> через ключове слово <code>new</code>.</p> + +<pre class="brush: js;">// це... +const x = Error('Я був створений викликом функції!') + +// ...має ту саму функціональність, що й це: +const y = new Error('Я був зконструйований ключовим словом "new"!')</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Специфікація</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-error-constructor', 'Error constructor')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Error.Error")}}</p> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{JSxRef("Statements/throw", "throw")}}</li> + <li>{{JSxRef("Statements/try...catch", "try...catch")}}</li> +</ul> 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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>Властивість <code><strong>fileName</strong></code> містить шлях до файлу, який спричинив помилку.</p> + +<h2 id="Опис">Опис</h2> + +<p>Ця нестандартна властивість містить шлях до файлу, який спричинив дану помилку. При виклику в контексті відладчика, наприклад, у інструментах розробника Firefox, повертається "debugger eval code".</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Використання_fileName">Використання <code>fileName</code></h3> + +<pre class="brush: js">var e = new Error('Could not parse input'); +throw e; +// e.fileName може виглядати як "file:///C:/example.html" +</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<p>Не є частиною жодних специфікацій. Нестандартна властивість.</p> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Error.fileName")}}</p> +</div> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Error.prototype.stack")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.columnNumber")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p>Об'єкти <code>Error</code> викидаються, коли виникає помилка виконання. Об'єкт <code>Error</code> також можна використовувати як базовий об'єкт для винятків, створених користувачем. Дивіться нижче стандартні вбудовані типи помилок.</p> + +<h2 id="Опис">Опис</h2> + +<p>Помилки виконання спричиняють створення й викидання нових об'єктів <code>Error</code>.</p> + +<h3 id="Типи_помилок">Типи помилок</h3> + +<p>Окрім загального конструктора <code>Error</code>, у JavaScript існують сім інших базових конструкторів помилок. Щодо обробки винятків на боці клієнта, дивіться розділ <a href="/uk/docs/Web/JavaScript/Guide/Control_flow_and_error_handling#Exception_handling_statements">Оператори обробки винятків</a>.</p> + +<dl> + <dt>{{jsxref("EvalError")}}</dt> + <dd>Створює екземпляр помилки, що виникає під час використання глобальної функції {{jsxref("eval", "eval()")}}.</dd> + <dt>{{jsxref("InternalError")}} {{non-standard_inline}}</dt> + <dd>Створює екземпляр помилки, що виникає, коли викидається внутрішня помилка рушія JavaScript. Наприклад, "too much recursion".</dd> + <dt>{{jsxref("RangeError")}}</dt> + <dd>Створює екземпляр помилки, що виникає, коли значення чисельної змінної або параметра знаходиться поза межами дозволеного діапазону.</dd> + <dt>{{jsxref("ReferenceError")}}</dt> + <dd>Створює екземпляр помилки, що виникає при зверненні за недійсним посиланням.</dd> + <dt>{{jsxref("SyntaxError")}}</dt> + <dd>Створює екземпляр синтаксичної помилки, яка виникає під час аналізу коду у {{jsxref("eval", "eval()")}}.</dd> + <dt>{{jsxref("TypeError")}}</dt> + <dd>Створює екземпляр помилки, що виникає при використанні змінної або параметра невідповідного типу.</dd> + <dt>{{jsxref("URIError")}}</dt> + <dd>Створює екземпляр помилки, що виникає, коли до {{jsxref("encodeURI", "encodeURI()")}} або {{jsxref("decodeURI", "decodeURI()")}} передаються неправильні параметри.</dd> +</dl> + +<h2 id="Конструктор">Конструктор</h2> + +<dl> + <dt><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Error/Error">Error()</a></dt> + <dd>Створює об'єкти <code>Error</code>.</dd> +</dl> + +<h2 id="Властивості">Властивості</h2> + +<dl> + <dt><code>Error.prototype</code></dt> + <dd>Дозволяє додавати властивості до екземплярів <code>Error</code>.</dd> +</dl> + +<h2 id="Методи">Методи</h2> + +<p>Глобальний об'єкт <code>Error</code> не має власних методів, однак, він успадковує деякі методи через ланцюжок прототипів.</p> + +<h3 id="Нестандартні_методи">Нестандартні методи</h3> + +<p>{{Non-standard_Header}}</p> + +<dl> + <dt>{{JSxRef("Error.captureStackTrace()")}} {{Non-standard_Inline}}</dt> + <dd>Функція <strong>V8</strong>, яка створює властивість {{JSxRef("Error.prototype.stack", "stack")}} на екземплярі Error.</dd> +</dl> + +<h2 id="Екземпляри_Error">Екземпляри Error</h2> + +<div>{{page('uk/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Опис')}}</div> + +<h3 id="Властивості_2">Властивості</h3> + +<div>{{page('/uk/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Властивості')}}</div> + +<h3 id="Методи_2">Методи</h3> + +<div>{{page('uk/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Методи')}}</div> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Викидання_загальної_помилки">Викидання загальної помилки</h3> + +<p>Зазвичай ви створюєте об'єкт <code>Error</code> для того, щоб викинути його з допомогою ключового слова {{jsxref("Statements/throw", "throw")}}. Ви можете обробити помилку, використовуючи конструкцію {{jsxref("Statements/try...catch", "try...catch")}}:</p> + +<pre class="brush: js">try { + throw new Error('Ой-ой!'); +} catch (e) { + console.error(e.name + ': ' + e.message); +} +</pre> + +<h3 id="Обробка_специфічної_помилки">Обробка специфічної помилки</h3> + +<p>Ви можете обробляти лише окремі типи помилок, перевіряючи тип помилки з допомогою властивості {{jsxref("Object.prototype.constructor", "constructor")}} або, якщо ви пишете для сучасних рушіїв JavaScript, ключовим словом {{jsxref("Operators/instanceof", "instanceof")}}:</p> + +<pre class="brush: js">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); + } + // ... і т.д. +} +</pre> + +<h3 id="Користувацькі_типи_помилок">Користувацькі типи помилок</h3> + +<p>Ви, можливо, захочете визначити свої власні типи помилок, успадкувавши їх від <code>Error</code>, щоб мати можливість викидати новий об'єкт помилки через <code>throw new MyError()</code> та використовувати <code>instanceof MyError</code> для перевірки типу помилки у обробнику винятків. В результаті отримуємо більш чистий та послідовний код обробки помилок. </p> + +<p>Дивіться всебічну дискусію <a href="http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript">"What's a good way to extend Error in JavaScript?"</a> на StackOverflow.</p> + +<h4 id="Користувацький_клас_помилки_у_ES6">Користувацький клас помилки у ES6</h4> + +<div class="warning"> +<p>Babel до 7-ї версії може працювати з методами класу <code>CustomError</code>, але тільки якщо вони оголошені через <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty()</a>. Інакше старі версії Babel та інші транспілятори не зможуть коректно обробити наступний код без <a href="https://github.com/loganfsmyth/babel-plugin-transform-builtin-extend">додаткових налаштувань</a>.</p> +</div> + +<div class="note"> +<p>Деякі веб-переглядачі включають конструктор <code>CustomError</code> у трасування стеку при використанні класів ES2015.</p> +</div> + +<pre class="brush: js">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 +}</pre> + +<h4 id="Користувацький_обєкт_помилки_у_ES5">Користувацький об'єкт помилки у ES5</h4> + +<div class="warning"> +<p><strong>Всі</strong> веб-переглядачі включають конструктор CustomError у трасування стеку при використанні прототипного оголошення.</p> +</div> + +<pre class="brush: js">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 +}</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Специфікація</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Error")}}</p> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Statements/throw", "throw")}}</li> + <li>{{jsxref("Statements/try...catch", "try...catch")}}</li> +</ul> 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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>Властивість <code><strong>lineNumber</strong></code> містить номер рядка у файлі, що спричинив помилку.</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Використання_lineNumber">Використання <code>lineNumber</code></h3> + +<pre class="brush: js">var e = new Error('Could not parse input'); +throw e; +console.log(e.lineNumber) // 2 +</pre> + +<h3 id="Альтернативний_приклад_використання_події_error">Альтернативний приклад використання події <code>error</code> </h3> + +<pre class="brush: js">window.addEventListener('error', function(e) { + console.log(e.lineNumber); // 5 +}); +var e = new Error('Could not parse input'); +throw e; +</pre> + +<p>Це нестандартна властивість, їй бракує всебічної підтримки. Дивіться таблицю сумісності з браузерами нижче.</p> + +<h2 id="Специфікації">Специфікації</h2> + +<p>Не є частиною жодних специфікацій. Нестандартна властивість.</p> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Error.lineNumber")}}</p> +</div> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Error.prototype.stack")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.columnNumber")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.fileName")}} {{non-standard_inline}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p>Властивість <code><strong>message</strong></code> - це зрозумілий людині опис помилки.</p> + +<h2 id="Опис">Опис</h2> + +<p>Ця властивість містить стислий опис помилки, якщо він був наданий. Рушій <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> активно використовує властивість <code>message</code> для винятків. Властивість <code>message</code> у поєднанні з властивістю {{jsxref("Error.prototype.name", "name")}} використовується методом {{jsxref("Error.prototype.toString()")}} для створення рядкового представлення помилки.</p> + +<p>За замовчуванням, властивість <code>message</code> є порожнім рядком, але ця поведінка може бути заміщена, наприклад, передачею повідомлення першим аргументом у {{jsxref("Error", "конструктор Error")}}.</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Викидання_користувацької_помилки">Викидання користувацької помилки</h3> + +<pre class="brush: js">var e = new Error('Could not parse input'); +// e.message дорівнює 'Could not parse input' +throw e; +</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Специфікація</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-error.prototype.message', 'Error.prototype.message')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Error.message")}}</p> +</div> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Error.prototype.name")}}</li> + <li>{{jsxref("Error.prototype.toString()")}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p>Властивість <code><strong>name</strong></code> містить ім'я типу помилки. Початкове значення дорівнює "Error".</p> + +<h2 id="Опис">Опис</h2> + +<p>За замовчуванням екземплярам {{jsxref("Error")}} надається ім'я "Error". Властивість <code>name</code>, на додаток до властивості {{jsxref("Error.prototype.message", "message")}}, використовується методом {{jsxref("Error.prototype.toString()")}} для створення рядкового представлення помилки.</p> + +<h2 id="Приклади">Приклади</h2> + +<h3 id="Викидання_користувацької_помилки">Викидання користувацької помилки</h3> + +<pre class="brush: js">var e = new Error('Malformed input'); // e.name дорівнює 'Error' + +e.name = 'ParseError'; +throw e; +// e.toString() поверне 'ParseError: Malformed input' +</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Специфікація</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-error.prototype.name', 'Error.prototype.name')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Error.name")}}</p> +</div> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Error.prototype.message")}}</li> + <li>{{jsxref("Error.prototype.toString()")}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p>Властивість <code><strong>Error.prototype</strong></code> є прототипом для конструктора {{jsxref("Error")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Опис">Опис</h2> + +<p>Всі екземпляри {{jsxref("Error")}} та екземпляри {{jsxref("Global_Objects/Error", "базових конструкторів помилок", "#Типи_помилок", 1)}} успадковуються від <code>Error.prototype</code>. Як в усіх функціях-конструкторах, ви можете використовувати прототип конструктора, щоб додавати властивості чи методи до усіх екземплярів, створених цим конструктором. </p> + +<h2 id="Властивості">Властивості</h2> + +<h3 id="Стандартні_властивості">Стандартні властивості</h3> + +<dl> + <dt><code>Error.prototype.constructor</code></dt> + <dd>Функція, яка створила прототип екземпляра.</dd> + <dt>{{jsxref("Error.prototype.message")}}</dt> + <dd>Повідомлення помилки.</dd> + <dt>{{jsxref("Error.prototype.name")}}</dt> + <dd>Ім'я помилки.</dd> +</dl> + +<h3 id="Спеціальні_розширення">Спеціальні розширення</h3> + +<p>{{non-standard_header}}</p> + +<h4 id="Microsoft">Microsoft</h4> + +<dl> + <dt><code><a href="/uk/docs/Web/JavaScript/Microsoft_Extensions/Error.description">Error.description</a></code></dt> + <dd>Опис помилки. Властивість схожа на {{jsxref("Error.prototype.message", "message")}}.</dd> + <dt><code><a href="/uk/docs/Web/JavaScript/Microsoft_Extensions/Error.number">Error.number</a></code></dt> + <dd>Номер помилки.</dd> +</dl> + +<h4 id="Mozilla">Mozilla</h4> + +<dl> + <dt>{{jsxref("Error.prototype.fileName")}}</dt> + <dd>Шлях до файлу, що спричинив помилку.</dd> + <dt>{{jsxref("Error.prototype.lineNumber")}}</dt> + <dd>Номер рядка у файлі, що спричинив помилку.</dd> + <dt>{{jsxref("Error.prototype.columnNumber")}}</dt> + <dd>Номер стовпця у файлі, де виникла помилка.</dd> + <dt>{{jsxref("Error.prototype.stack")}}</dt> + <dd>Трасування стеку.</dd> +</dl> + +<h2 id="Методи">Методи</h2> + +<dl> + <dt>{{jsxref("Error.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Повертає рядок з кодом, що спричинить створення заданого об'єкта {{jsxref("Error")}}; ви можете використати це значення, щоб створити новий об'єкт. Заміщує метод {{jsxref("Object.prototype.toSource()")}}.</dd> + <dt>{{jsxref("Error.prototype.toString()")}}</dt> + <dd>Повертає рядок, що представляє заданий об'єкт. Заміщує метод {{jsxref("Object.prototype.toString()")}}.</dd> +</dl> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Специфікація</th> + <th scope="col">Статус</th> + <th scope="col">Коментар</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Початкове визначення Реалізовано у JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.3.1', 'Error')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-error.prototype', 'Error')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-error.prototype', 'Error')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Error.prototype")}}</p> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("Object.prototype")}}</li> +</ul> 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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>Нестандартна властивість <strong><code>stack</code></strong> об'єктів {{jsxref("Error")}} надає звіт про те, які функції були викликані, в якому порядку, з якого рядка файлу та з якими аргументами. Текстовий рядок стеку ведеться з останніх викликів до більш ранніх, і аж до початкового виклику у глобальній області видимості.</p> + +<h2 id="Опис">Опис</h2> + +<p>Кожний крок буде відокремлений новим рядком, де перша частина є іменем функції (якщо це не виклик з глобальної області видимості), далі через символ (@) розташування файлу (окрім випадку, коли функція є конструктором помилки під час викидання помилки), двокрапка та, якщо доступне розташування файлу, номер рядка. (Зауважте, що об'єкт {{jsxref("Error")}} також має властивості <code>fileName</code>, <code>lineNumber</code> та <code>columnNumber</code> для отримання цієї інформації про помилку, що викидається (але тільки про помилку, а не стек її викликів).)</p> + +<p>Зауважте, що це формат, який використовується у Firefox. Не існує стандартного формату. Однак, Safari 6+ та Opera 12- використовують дуже схожий формат. Переглядачі на рушії JavaScript V8 (такі, як Chrome, Opera 15+, Android Browser) та IE10+, з іншого боку, використовують інший формат (дивіться <a href="https://web.archive.org/web/20140210004225/http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">архів документів MSDN щодо error.stack</a>).</p> + +<p><strong>Значення аргументів у стеку</strong>: До версії Firefox 14 після імені функції були б записані значення аргументів, перетворені у рядок, у круглих дужках, одразу перед знаком (<code>@</code>). І якщо об'єкти (або масиви) були б виведені у вигляді <code>"[object Object]"</code>, і, таким чином, не могли бути перетворені назад у справжні об'єкти, то скалярні величини можна відновити (хоча, можливо — це досі доступно у Firefox 14 — легше використовувати <code>arguments.callee.caller.arguments</code>, а ім'я функції можна отримати через <code>arguments.callee.caller.name</code>). <code>"undefined"</code> записується як <code>"(void 0)"</code>. Зауважте, що, якщо рядкові аргументи були передані з такими символами як <code>"@"</code>, <code>"("</code>, <code>")"</code> (або вони присутні в іменах файлів), на них не можна покладатись для розбиття рядка на окремі частини. Таким чином, у Firefox 14 та пізніших версіях це вже не є такою проблемою.</p> + +<p>Різні веб-переглядачі встановлюють це значення в різні моменти. Наприклад, Firefox встановлює його при створенні об'єкта {{jsxref("Error")}}, в той час як PhantomJS встановлює його лише при викиданні об'єкта {{jsxref("Error")}}, а реалізація <a href="https://web.archive.org/web/20140210004225/http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">у архівних документах MSDN</a>, схоже, співпадає з PhantomJS.</p> + +<h2 id="Приклад">Приклад</h2> + +<p>Наступна HTML-розмітка демонструє використання властивості <code>stack</code> .</p> + +<pre class="brush: html"><!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> +</pre> + +<p>За умови, що наведена розмітка збережена як <code>C:\example.html</code> у файловій системі Windows, вона створить діалогове вікно оповіщення з наступним текстом:</p> + +<p>Firefox 30 та новіші містять номер стовпця:</p> + +<pre><samp>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</samp></pre> + +<p>З Firefox 14 по Firefox 29:</p> + +<pre><samp>trace@file:///C:/example.html:9 +b@file:///C:/example.html:16 +a@file:///C:/example.html:19 +@file:///C:/example.html:21</samp></pre> + +<p>Firefox 13 та старші натомість виведуть наступний текст:</p> + +<pre><samp>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</samp></pre> + +<h3 id="Стек_коду_у_eval_та_Function">Стек коду у eval() та Function()</h3> + +<p>Починаючи з Firefox 30, стек помилки коду у викликах <code>Function()</code> та <code>eval()</code> тепер створює звіти з більш детальною інформацією щодо номеру рядків та стовпчиків у цих викликах. Виклики Function позначаються записом <code>"> Function"</code>, а виклики eval записом <code>"> eval"</code>.</p> + +<pre class="brush: js">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 +</pre> + +<p>Ви також можете скористатися директивою <code>//# sourceURL</code>, щоб присвоїти ім'я коду, що передається. Дивіться також <a href="/uk/docs/Tools/Debugger/How_to/Debug_eval_sources">Відладка коду у eval() та Function()</a> у статтях на сторінці <a href="/uk/docs/Tools/Debugger">Debugger</a>, а також цей <a href="http://fitzgeraldnick.com/weblog/59/">пост</a>.</p> + +<h2 id="Специфікації">Специфікації</h2> + +<p>Не є частиною жодних специфікацій. Нестандартна властивість.</p> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Error.stack")}}</p> +</div> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li><a href="/en-US/docs/Components.stack">Components.stack</a></li> + <li>External projects: <a class="link-https" href="https://github.com/csnover/TraceKit/">TraceKit</a> and <a class="link-https" href="https://github.com/eriwen/javascript-stacktrace">javascript-stacktrace</a></li> + <li>MSDN: <a class="external" href="http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx" title="http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">error.stack</a> docs</li> + <li><a href="https://github.com/v8/v8/wiki/Stack%20Trace%20API">Overview of the V8 JavaScript stack trace API</a></li> +</ul> 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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>Метод toSource() повертає код, який може створити таку саму помилку.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>e</var>.toSource()</pre> + +<h3 id="Значення_яке_повертається">Значення, яке повертається</h3> + +<p>Текстовий рядок з кодом, що викликає помилку.</p> + +<h2 id="Опис">Опис</h2> + +<p>Виклик методу <code>toSource</code> екземпляра {{jsxref("Error")}} (або інших <em><a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Error#Типи_помилок">базових типів</a></em>) поверне текстовий рядок з кодом для створення помилки. Цей рядок може бути обчислений для створення (приблизно) такого самого об'єкта. Звісно, рядок з кодом відповідає структурі конструктора {{jsxref("Error")}}. Для прикладу:</p> + +<pre class="brush: js">(new<em>name</em>(<em>message</em> ,<em>fileName</em>,<em>lineNumber</em>)) +</pre> + +<p>де наведені атрибути відповідають аналогічним властивостям екземпляра помилки.</p> + +<div class="note"> +<p><strong>Примітка:</strong> Зауважте, що властивості, які використовуються методом <code>toSource</code> при створенні текстового рядка, можуть змінюватися і не точно відображатимуть функцію, що використовувалась для створення екземпляра помилки, або ім'я файлу, або номер рядка, де виникла помилка.</p> +</div> + +<h2 id="Специфікації">Специфікації</h2> + +<p>Не є частиною жодних специфікацій. Реалізовано у JavaScript 1.3.</p> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Error.toSource")}}</p> +</div> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Error.prototype.fileName")}}</li> + <li>{{jsxref("Error.prototype.lineNumber")}}</li> + <li>{{jsxref("Error.prototype.message")}}</li> + <li>{{jsxref("Error.prototype.name")}}</li> + <li>{{jsxref("Object.prototype.toSource()")}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>toString()</strong></code> повертає текстовий рядок, що представляє заданий об'єкт {{jsxref("Error")}}.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>e</var>.toString()</code></pre> + +<h3 id="Значення_яке_повертається">Значення, яке повертається</h3> + +<p>Текстовий рядок, що представляє об'єкт {{jsxref("Error")}}.</p> + +<h2 id="Опис">Опис</h2> + +<p>Об'єкт {{jsxref("Error")}} заміщує метод {{jsxref("Object.prototype.toString()")}}, що успадковується усіма об'єктами. Його семантика наступна (за умови, що {{jsxref("Object")}} та {{jsxref("String")}} мають свої початкові значення):</p> + +<pre class="brush: js">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; +}; +</pre> + +<h2 id="Приклади">Приклади</h2> + +<pre class="brush: js">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()); // 'привіт' +</pre> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Специфікація</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Error.toString")}}</p> +</div> +</div> + +<h2 id="Див._також">Див. також</h2> + +<ul> + <li>{{jsxref("Error.prototype.toSource()")}}</li> +</ul> |