From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../global_objects/error/columnnumber/index.html | 78 ++++++++ .../global_objects/error/filename/index.html | 80 ++++++++ .../reference/global_objects/error/index.html | 208 +++++++++++++++++++++ .../global_objects/error/linenumber/index.html | 92 +++++++++ .../global_objects/error/message/index.html | 107 +++++++++++ .../reference/global_objects/error/name/index.html | 108 +++++++++++ .../global_objects/error/prototype/index.html | 154 +++++++++++++++ .../global_objects/error/stack/index.html | 147 +++++++++++++++ .../global_objects/error/tosource/index.html | 88 +++++++++ .../global_objects/error/tostring/index.html | 136 ++++++++++++++ 10 files changed, 1198 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/filename/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/linenumber/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/message/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/name/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/prototype/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/stack/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/tosource/index.html create mode 100644 files/ru/web/javascript/reference/global_objects/error/tostring/index.html (limited to 'files/ru/web/javascript/reference/global_objects/error') diff --git a/files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html b/files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html new file mode 100644 index 0000000000..8138b26a29 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html @@ -0,0 +1,78 @@ +--- +title: Error.prototype.columnNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/columnNumber +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/columnNumber +--- +
+ {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+

Сводка

+

Свойство columnNumber содержит номер колонки в строке файла, в котором возникла эта ошибка.

+

Примеры

+

Пример: использование columnNumber

+
var e = new Error('Невозможно разобрать входные данные');
+throw e;
+console.log(e.columnNumber) // 0
+
+

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

+

Не является чаcтью какой-либо спецификации. Не стандартно.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/filename/index.html b/files/ru/web/javascript/reference/global_objects/error/filename/index.html new file mode 100644 index 0000000000..c2f2affeb0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/filename/index.html @@ -0,0 +1,80 @@ +--- +title: Error.prototype.fileName +slug: Web/JavaScript/Reference/Global_Objects/Error/fileName +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/fileName +--- +
+ {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+

Сводка

+

Свойство fileName содержит путь к файлу, в котором возникла эта ошибка.

+

Описание

+

Это нестандартное свойство содержит путь к файлу, в котором возникла эта ошибка. Если доступ к нему получен в контексте отладчика, например, Инструментов разработчика Firefox, вернётся строка «debugger eval code».

+

Примеры

+

Пример: использование fileName

+
var e = new Error('Невозможно разобрать входные данные');
+throw e;
+// e.fileName может выглядеть так "file:///C:/example.html"
+
+

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

+

Не является чаcтью какой-либо спецификации. Не стандартно.

+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/index.html b/files/ru/web/javascript/reference/global_objects/error/index.html new file mode 100644 index 0000000000..95fd8918a1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/index.html @@ -0,0 +1,208 @@ +--- +title: Error +slug: Web/JavaScript/Reference/Global_Objects/Error +tags: + - Error + - JavaScript + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +
{{JSRef}}
+ +

Конструктор Error создаёт объект ошибки. Экземпляры объекта Error выбрасываются при возникновении ошибок во время выполнения. Объект 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.

+ +

Данная страница документирует использование объекта Error как самого по себе, так и при использовании в качестве функции-конструктора. Список свойств и методов, унаследованых экземплярами объекта Error, смотрите в разделе {{jsxref("Error.prototype")}}.

+ +

 

+ +

Использование как функции

+ +

Когда Error используется как функции-- без {{jsxref("Operators/new", "new")}}, она возвращает Error объект. Следовательно простой вызов Error произведет тот же результат, что и конструктор Error объявленный через new.

+ +
// this:
+const x = Error('I was created using a function call!');
+​​​​// Такая же функциональность:
+const y = new Error('I was constructed via the "new" keyword!');
+ +

 

+ +

Типы ошибок

+ +

Кроме общего конструктора Error, в JavaScript существует ещё семь других основных конструкторов ошибок. По обработке исключений смотрите раздел Выражения обработки исключений.

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

Свойства

+ +
+
{{jsxref("Error.prototype")}}
+
Позволяет добавлять свойства в экземпляры объекта Error.
+
+ +

Методы

+ +

Глобальный объект Error не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.

+ +

Экземпляры объекта Error

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Description')}}
+ +

Свойства

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Properties')}}
+ +

Методы

+ +
{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Methods')}}
+ +

Примеры

+ +

Пример: выбрасывание обычной ошибки

+ +

Обычно, вы создаёте объект Error с намерением возбудить ошибку с помощью ключевого слова {{jsxref("Statements/throw", "throw")}}. Вы можете обработать ошибку с помощью конструкции {{jsxref("Statements/try...catch", "try...catch")}}:

+ +
try {
+  throw new Error('Уупс!');
+} catch (e) {
+  console.log(e.name + ': ' + e.message);
+}
+
+ +

Пример: обработка ошибки конкретного типа

+ +

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

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

Пример: пользовательские типы ошибок

+ +

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

+ +
+

Предупреждение: обратите внимание, что выбрасывание MyError будет сообщать неправильные номер строки lineNumber и имя файла fileName как минимум, в Firefox.

+
+ +

Также смотрите обсуждение «Какой способ расширения Error в JavaScript более предпочтителен?» на Stackoverflow.

+ +
// Создаём новый объект, затем через прототип делаем его наследником конструктора Error.
+function MyError(message) {
+  this.name = 'MyError';
+  this.message = message || 'Сообщение по умолчанию';
+  this.stack = (new Error()).stack;
+}
+MyError.prototype = Object.create(Error.prototype);
+MyError.prototype.constructor = MyError;
+
+try {
+  throw new MyError();
+} catch (e) {
+  console.log(e.name);     // 'MyError'
+  console.log(e.message);  // 'Сообщение по умолчанию'
+}
+
+try {
+  throw new MyError('пользовательское сообщение');
+} catch (e) {
+  console.log(e.name);     // 'MyError'
+  console.log(e.message);  // 'пользовательское сообщение'
+}
+
+ +

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

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

Совместимость с браузерами

+ +

 

+ + + +

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

+ +

 

+ +
 
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/error/linenumber/index.html b/files/ru/web/javascript/reference/global_objects/error/linenumber/index.html new file mode 100644 index 0000000000..c9f2d5c33e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/linenumber/index.html @@ -0,0 +1,92 @@ +--- +title: Error.prototype.lineNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+ +

Сводка

+

Свойство lineNumber содержит номер строки в файле, в котором возникла эта ошибка.

+ +

Примеры

+ +

Пример: использование lineNumber

+
var e = new Error('Невозможно разобрать входные данные');
+throw e;
+console.log(e.lineNumber) // 2
+
+ +

Пример: альтернативный пример с использованием события error

+
window.addEventListener('error', function(e) {
+  console.log(e.lineno); // 5
+});
+var e = new Error('Невозможно разобрать входные данные');
+throw e;
+
+

Это стандарт и он поддерживается в Chrome, Firefox и, вероятно, много где ещё.

+ +

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

+

Не является чаcтью какой-либо спецификации. Не стандартно.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержкаНа объекте ошибки в обработчике события error{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatNo}}{{CompatNo}}{{CompatVersionUnknown}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/message/index.html b/files/ru/web/javascript/reference/global_objects/error/message/index.html new file mode 100644 index 0000000000..655ce0924b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/message/index.html @@ -0,0 +1,107 @@ +--- +title: Error.prototype.message +slug: Web/JavaScript/Reference/Global_Objects/Error/message +tags: + - Error + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/message +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство message представляет человеко-читаемое описание ошибки.

+ +

Описание

+

Это свойство содержит краткое описание ошибки, если оно доступно или было установлено. SpiderMonkey широко использует свойство message для исключений. Свойство message в сочетании со свойством {{jsxref("Error.prototype.name", "name")}} используется методом {{jsxref("Error.prototype.toString()")}} для создания строкового представления ошибки.

+

По умолчанию, свойство message является пустой строкой, но это поведение может быть переопределено для экземпляра путём указания сообщения первым аргументом в конструкторе объекта {{jsxref("Global_Objects/Error", "Error")}}.

+ +

Примеры

+ +

Пример: выбрасывание собственной ошибки

+
var e = new Error('Невозможно разобрать входные данные');
+// e.message равно 'Невозможно разобрать входные данные'
+throw e;
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.4.3', 'Error.prototype.message')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype.message', 'Error.prototype.message')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/name/index.html b/files/ru/web/javascript/reference/global_objects/error/name/index.html new file mode 100644 index 0000000000..856ded3954 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/name/index.html @@ -0,0 +1,108 @@ +--- +title: Error.prototype.name +slug: Web/JavaScript/Reference/Global_Objects/Error/name +tags: + - Error + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/name +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+

Свойство name представляет имя типа ошибки. Начальное значение равно строке "Error".

+ +

Описание

+

По умолчанию, экземпляры {{jsxref("Error")}} имеют имя "Error". Свойство name, вместе со свойством {{jsxref("Error.prototype.message", "message")}}, используется методом {{jsxref("Error.prototype.toString()")}} для создания строкового представления ошибки.

+ +

Примеры

+ +

Пример: выбрасывание собственной ошибки

+
var e = new Error('Неверные входные данные'); // e.name равно 'Error'
+
+e.name = 'ParseError';
+throw e;
+// e.toString() вернёт 'ParseError: Неверные входные данные'
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.11.4.2', 'Error.prototype.name')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype.name', 'Error.prototype.name')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/prototype/index.html b/files/ru/web/javascript/reference/global_objects/error/prototype/index.html new file mode 100644 index 0000000000..a31d760836 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/prototype/index.html @@ -0,0 +1,154 @@ +--- +title: Error.prototype +slug: Web/JavaScript/Reference/Global_Objects/Error/prototype +tags: + - Error + - JavaScript + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+ +

Сводка

+ +

Свойство Error.prototype представляет прототип конструктора объекта {{jsxref("Global_Objects/Error", "Error")}}.

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

Описание

+ +

Все экземпляры {{jsxref("Global_Objects/Error", "Error")}} и экземпляры {{jsxref("Global_Objects/Error", "неуниверсальных ошибок", "#Error_types", 1)}} наследуются от Error.prototype. Как и со всеми функциями-конструкторами, вы можете использовать прототип конструктора для добавления свойств и методов ко всем экземплярам, создаваемым этим конструктором.

+ +

Свойства

+ +

Стандартные свойства

+ +
+
Error.prototype.constructor
+
Определяет функцию, создающую прототип экземпляра ошибки.
+
{{jsxref("Error.prototype.message")}}
+
Сообщение ошибки.
+
{{jsxref("Error.prototype.name")}}
+
Название ошибки.
+
+ +

Расширения вендоров

+ +
{{non-standard_header}}
+ +

Microsoft

+ +
+
{{jsxref("Error.prototype.description")}}
+
Описание ошибки. Аналогично свойству {{jsxref("Error.prototype.message", "message")}}.
+
{{jsxref("Error.prototype.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("Global_Objects/Error", "Error")}}; вы можете использовать это значение для создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.
+
{{jsxref("Error.prototype.toString()")}}
+
Возвращает строку, представляющую указанный объект. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.
+
+ +

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

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

Совместимость с браузерами

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Смотрите также

+ + diff --git a/files/ru/web/javascript/reference/global_objects/error/stack/index.html b/files/ru/web/javascript/reference/global_objects/error/stack/index.html new file mode 100644 index 0000000000..de0f95e041 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/stack/index.html @@ -0,0 +1,147 @@ +--- +title: Error.prototype.stack +slug: Web/JavaScript/Reference/Global_Objects/Error/Stack +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error/Stack +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+ +

Сводка

+

Нестандартное свойство stack объекта {{jsxref("Error")}} возвращает трассировку стека вызываемых функций в порядке их выполнения, вместе с номерами строк, именами файлов и аргументами. Строка со стеком заполняется от самых недавних вызовов до вызова из глобальной области видимости.

+ +

Описание

+

Каждый шаг находится на отдельной строке; первая часть строки содержит имя функции (если это не вызов из глобальной области видимости), затем знак собаки (@), местоположение файла (кроме случая, когда функция является конструктором ошибки, которую она выбрасывает), двоеточие и, если есть местоположение файла, номер строки. Обратите внимание, что объект {{jsxref("Error")}} также обладает свойствами fileName, lineNumber и columnNumber, позволяющими извлечь имя файла, номер строки и столбца из выброшенной ошибки (но только самой ошибки, а не всего стека вызовов).

+

Обратите внимание, что такой формат используется в Firefox. Нет никакого «стандартного формата». Однако, Safari 6+ и Opera 12- используют очень похожий формат. С другой стороны, браузеры, использующие движок JavaScript V8 (например, Chrome, Opera 15+, Браузер Android) и IE10+, используют другой формат (смотрите эту статью по error.stack в MSDN).

+

Значения аргументов в стеке: до Firefox 14 ({{bug("744842")}}) за именем функции и прямо перед знаком собаки (@) в круглых скобках следовали значения аргументов, преобразованные в строки. Хотя объекты (или массивы и прочее) преобразовывались в форму "[object Object]", и, таким образом, невозможно было узнать их содержимое, скалярные значения могли быть извлечены (это всё ещё можно использовать в Firefox 14 — однако проще для получения аргументов использовать arguments.callee.caller.arguments, а для получения имени функции — arguments.callee.caller.name). Значение "undefined" показывалось как "(void 0)". Обратите внимание, что если строковые аргументы содержали значения, включающие символы "@", "(", ")" (или если они включали имена файлов), вам не так то просто было разбить строку на составные части. Таким образом, в Firefox 14 и более поздних версиях это перестало быть проблемой.

+ +

Примеры

+

Следующая разметка HTML демонстрирует использование свойства stack.

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

Предполагается, что разметка выше сохранена как C:\example.html в файловой системе Windows. Она выводит следующий текст в диалоговом окне:

+

Начиная с Firefox 30 и более поздних версий, вывод содержит номер колонки ({{bug("762556")}}):

+
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("Моя ошибка")@: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()

+

Начиная с Firefox 30 {{geckoRelease("30")}}, стек вызовов кода в вызовах Function() и eval() даёт более подробную информацию о номере строки и колонки внутри этих вызовов. Вызовы Function обозначаются "> Function", а вызовы eval() обозначаются "> eval". Смотрите {{bug("332176")}}.

+
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
+
+

Также для именования исходного кода в функции eval() вы можете использовать директиву //# sourceURL. Смотрите раздел Отладка исходных кодов в функции eval() в документации по отладчику, а также эту запись в блоге (на английском).

+ +

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

+

Не является чаcтью какой-либо спецификации. Не стандартно.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatIE("10")}}{{CompatVersionUnknown}}{{CompatSafari("6")}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержкаAndroid 4 (возможно, Android 3, но не Android 2){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatSafari("6")}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/tosource/index.html b/files/ru/web/javascript/reference/global_objects/error/tosource/index.html new file mode 100644 index 0000000000..7cc274da14 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/tosource/index.html @@ -0,0 +1,88 @@ +--- +title: Error.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Error/toSource +tags: + - Error + - JavaScript + - Method + - Non-standard + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource +--- +
{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}
+ +

Сводка

+

Метод toSource() возвращает код, вычисление которого приведёт к этой же ошибке.

+ +

Синтаксис

+
e.toSource()
+ +

Описание

+

Вызов метода toSource на экземпляре класса {{jsxref("Error")}} (включая родные ошибки) вернёт строку, содержащую исходный код ошибки. Эта строка может быть выполнена для создания (приблизительно) эквивалентного объекта. Естественно, строка, содержащая исходный код, следует структуре конструктора объекта {{jsxref("Error")}}. Например:

+
(new name(message, fileName, lineNumber))
+
+

здесь атрибуты относятся к соответствующим свойствам экземпляра ошибки.

+
+

Обратите внимание: имейте в виду, что свойства, используемые методом toSource при создании строки, изменяемы и могут неточно отражать функцию, с помощью которой создан экземпляр ошибки, или имя файла, или номер строки, где возникла ошибка.

+
+ +

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

+

Не является чаcтью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

Смотрите также

+ diff --git a/files/ru/web/javascript/reference/global_objects/error/tostring/index.html b/files/ru/web/javascript/reference/global_objects/error/tostring/index.html new file mode 100644 index 0000000000..22d4157c81 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/tostring/index.html @@ -0,0 +1,136 @@ +--- +title: Error.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Error/toString +tags: + - Error + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toString +--- +
+ {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}
+

Сводка

+

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

+

Синтаксис

+
e.toString()
+

Описание

+

Объект {{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('непоправимая ошибка');
+print(e.toString()); // 'Error: непоправимая ошибка'
+
+e.name = undefined;
+print(e.toString()); // 'Error: непоправимая ошибка'
+
+e.name = '';
+print(e.toString()); // 'непоправимая ошибка'
+
+e.message = undefined;
+print(e.toString()); // 'Error'
+
+e.name = 'привет';
+print(e.toString()); // 'привет'
+
+

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

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 1-е издание.СтандартИзначальное определение. Реализована в JavaScript 1.1.
{{SpecName('ES5.1', '#sec-15.11.4.4', 'Error.prototype.toString')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}{{Spec2('ES6')}} 
+

Совместимость с браузерами

+
+ {{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+

Смотрите также

+ -- cgit v1.2.3-54-g00ecf