From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../global_objects/error/columnnumber/index.html | 42 ++++ .../global_objects/error/error/index.html | 69 +++++++ .../global_objects/error/filename/index.html | 46 +++++ .../reference/global_objects/error/index.html | 220 +++++++++++++++++++++ .../global_objects/error/linenumber/index.html | 53 +++++ .../global_objects/error/message/index.html | 56 ++++++ .../reference/global_objects/error/name/index.html | 55 ++++++ .../global_objects/error/stack/index.html | 125 ++++++++++++ .../global_objects/error/tosource/index.html | 58 ++++++ .../global_objects/error/tostring/index.html | 100 ++++++++++ 10 files changed, 824 insertions(+) create mode 100644 files/ja/web/javascript/reference/global_objects/error/columnnumber/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/error/error/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/error/filename/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/error/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/error/linenumber/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/error/message/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/error/name/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/error/stack/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/error/tosource/index.html create mode 100644 files/ja/web/javascript/reference/global_objects/error/tostring/index.html (limited to 'files/ja/web/javascript/reference/global_objects/error') diff --git a/files/ja/web/javascript/reference/global_objects/error/columnnumber/index.html b/files/ja/web/javascript/reference/global_objects/error/columnnumber/index.html new file mode 100644 index 0000000000..375680761e --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/error/columnnumber/index.html @@ -0,0 +1,42 @@ +--- +title: Error.prototype.columnNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/columnNumber +tags: + - Error + - JavaScript + - Property + - Prototype +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/ja/web/javascript/reference/global_objects/error/error/index.html b/files/ja/web/javascript/reference/global_objects/error/error/index.html new file mode 100644 index 0000000000..d979fe2f71 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/error/error/index.html @@ -0,0 +1,69 @@ +--- +title: Error() コンストラクター +slug: Web/JavaScript/Reference/Global_Objects/Error/Error +tags: + - Constructor + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error/Error +--- +
{{JSRef}}
+ +

Error コンストラクターは、エラーオブジェクトを生成します。

+ +

構文

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

引数

+ +
+
message{{Optional_Inline}}
+
人間が読めるエラーの説明。
+
fileName {{Optional_Inline}}{{Non-standard_inline}}
+
生成された Error オブジェクト上の fileName プロパティに設定される値。既定では、Error() コンストラクターを呼び出したコードを含むファイルの名前です。
+
lineNumber {{Optional_Inline}}{{Non-standard_inline}}
+
生成された Error オブジェクト上の lineNumber プロパティに設定される値。既定では、Error() コンストラクターの呼び出しを含む行番号。
+
+ +

+ +

関数呼び出しか new による構築か

+ +

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/ja/web/javascript/reference/global_objects/error/filename/index.html b/files/ja/web/javascript/reference/global_objects/error/filename/index.html new file mode 100644 index 0000000000..687b98aeae --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/error/filename/index.html @@ -0,0 +1,46 @@ +--- +title: Error.prototype.fileName +slug: Web/JavaScript/Reference/Global_Objects/Error/fileName +tags: + - Error + - JavaScript + - Property + - Prototype +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 could look like "file:///C:/example.html"
+
+ +

仕様書

+ +

仕様の一部ではありません。

+ +

ブラウザーの互換性

+ +
+ + +

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

+
+ +

関連情報

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

Error オブジェクトは、実行時エラーが発生した時に発生します。 Error オブジェクトは、ユーザー定義の例外の基底オブジェクトとして使用することもできます。標準の組み込みエラー型については下記を参照してください。

+ +

解説

+ +

実行時エラーが発生すると、新しい Error オブジェクトが生成されスローされます。

+ +

エラーの型

+ +

JavaScript には、一般的な Error コンストラクターの他に、中核となる 7 つのエラーコンストラクターがあります。クライアント側の例外については、例外処理文を参照してください。

+ +
+
{{JSxRef("EvalError")}}
+
グローバル関数 {{JSxRef("eval", "eval()")}} に関して発生するエラーを表すインスタンスを生成します。
+
{{JSxRef("InternalError")}}
+
"too much recursion" (深すぎる再帰) など、JavaScript エンジンで内部エラーが発生した時に発生するエラーを表すインスタンスを生成します。
+
{{JSxRef("RangeError")}}
+
数値変数または引数が、その有効範囲外である場合に発生するエラーを表すインスタンスを生成します。
+
{{JSxRef("ReferenceError")}}
+
不正な参照から参照先の値を取得した時に発生するエラーを表すインスタンスを生成します。
+
{{JSxRef("SyntaxError")}}
+
構文エラーを表すインスタンスを生成します。
+
{{JSxRef("TypeError")}}
+
変数または引数の型が有効でない場合に発生するエラーを表すインスタンスを生成します。
+
{{JSxRef("URIError")}}
+
{{JSxRef("encodeURI", "encodeURI()")}} または {{JSxRef("decodeURI", "decodeURI()")}} に不正な引数が渡された時に発生するエラーを表すインスタンスを生成します。
+
+ +

コンストラクター

+ +
+
{{jsxref("Error/Error", "Error()")}}
+
新しい Error オブジェクトを生成します。
+
+ +

静的メソッド

+ +
+
{{JSxRef("Error.captureStackTrace()")}}
+
標準外の V8 の関数で、 Error インスタンスに {{JSxRef("Error.prototype.stack", "stack")}} プロパティを生成します。
+
+ +

インスタンスプロパティ

+ +
+
{{jsxref("Error.prototype.message")}}
+
エラーメッセージ。
+
{{jsxref("Error.prototype.name")}}
+
エラーの名称。
+
{{jsxref("Error.prototype.description")}}
+
標準外の Microsoft のプロパティで、エラーの説明です。 {{jsxref("Error.prototype.message", "message")}} と似ています。
+
{{jsxref("Error.prototype.number")}}
+
標準外の Microsoft のプロパティで、エラー番号です。
+
{{jsxref("Error.prototype.fileName")}}
+
標準外の Mozilla のプロパティで、このエラーが発生したファイルへのパスです。
+
{{jsxref("Error.prototype.lineNumber")}}
+
標準外の Mozilla のプロパティで、このエラーが発生したファイル内の行番号です。
+
{{jsxref("Error.prototype.columnNumber")}}
+
標準外の Mozilla のプロパティで、このエラーが発生した行内の桁番号です。
+
{{jsxref("Error.prototype.stack")}}
+
標準外の Mozilla プロパティで、スタックトレースです。
+
+ +

インスタンスメソッド

+ +
+
{{jsxref("Error.prototype.toString()")}}
+
指定したオブジェクトを表す文字列を返します。{{jsxref("Object.prototype.toString()")}} メソッドを上書きします。
+
+ +

+ +

一般的なエラーを発生させる

+ +

通常、{{JSxRef("Statements/throw", "throw")}} キーワードを使い意図的にエラーを発生させて Error オブジェクトを生成します。 {{JSxRef("Statements/try...catch", "try...catch")}} 構文を使用してエラーを処理してください:

+ +
try {
+  throw new Error('Whoops!')
+} 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)
+  }
+  // ... etc
+}
+
+ +

独自のエラー型

+ +

Error から派生した独自のエラー型を定義して throw new CustomError() ができるようにし、instanceof CustomError で例外ハンドラー内のエラーの種類を確認したいでしょう。これを行う一般的な方法の実例を以下に示します。

+ +

StackOverflow の突っ込んだ議論、 "What's a good way to extend Error in JavaScript?" も参照してください。

+ +

ES6 独自のエラークラス

+ +
+

Babel 7 以前では独自のエラークラスのメソッドを使用することができますが、 Object.defineProperty() で宣言された場合に限定されます。 そうでない場合、古い Babel やそれ以外のトランスパイラは、下記のコードを正しく処理するために追加の設定を必要とします。

+
+ +
+

ES2015 クラスを使用した場合、一部のブラウザのスタックトレース上に、 CustomError コンストラクタが含まれます。

+
+ +
class CustomError extends Error {
+  constructor(foo = 'bar', ...params) {
+    // Pass remaining arguments (including vendor specific ones) to parent constructor
+    super(...params)
+
+    // Maintains proper stack trace for where our error was thrown (only available on V8)
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, CustomError)
+    }
+
+    this.name = 'CustomError'
+    // Custom debugging information
+    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/ja/web/javascript/reference/global_objects/error/linenumber/index.html b/files/ja/web/javascript/reference/global_objects/error/linenumber/index.html new file mode 100644 index 0000000000..bc0a320786 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/error/linenumber/index.html @@ -0,0 +1,53 @@ +--- +title: Error.prototype.lineNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +tags: + - Error + - JavaScript + - Property + - Reference +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('入力を解釈できません');
+throw e;
+
+ +

これは標準の機能ではなく、幅広く対応されていません。下記のブラウザーの互換性の表をご覧ください。

+ +

仕様書

+ +

仕様の一部ではありません。

+ +

ブラウザーの互換性

+ +
+ + +

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

+
+ +

関連情報

+ + diff --git a/files/ja/web/javascript/reference/global_objects/error/message/index.html b/files/ja/web/javascript/reference/global_objects/error/message/index.html new file mode 100644 index 0000000000..c75bb22057 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/error/message/index.html @@ -0,0 +1,56 @@ +--- +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}}
+ +

message プロパティは、人間が読めるエラーの説明です。

+ +

解説

+ +

このプロパティは、利用可能または設定されている場合、エラーの簡潔な説明を含みます。SpiderMonkey は、例外の message プロパティを広範囲に渡って使用します。{{jsxref("Error.prototype.name", "name")}} プロパティは message プロパティとの組み合わせで、Error の文字列表現を生成するために {{jsxref("Error.prototype.toString()")}} メソッドにより使用されます。

+ +

既定で message プロパティは空文字列ですが、この振る舞いは、 {{jsxref("Error/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.name")}}

+
+ +

関連情報

+ + diff --git a/files/ja/web/javascript/reference/global_objects/error/name/index.html b/files/ja/web/javascript/reference/global_objects/error/name/index.html new file mode 100644 index 0000000000..ba957072b1 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/error/name/index.html @@ -0,0 +1,55 @@ +--- +title: Error.prototype.name +slug: Web/JavaScript/Reference/Global_Objects/Error/name +tags: + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/name +--- +
{{JSRef}}
+ +

name プロパティは、エラーの種類の名称を表します。初期値は "Error" です。

+ +

解説

+ +

既定で {{jsxref("Error")}} インスタンスには "Error" という名称が与えられます。 name プロパティは {{jsxref("Error.prototype.message", "message")}} プロパティに加えて、 Error の文字列表現を生成するため、{{jsxref("Error.prototype.toString()")}} メソッドにより使用されます。

+ +

+ +

独自のエラーを発生させる

+ +
var e = new Error('Malformed input'); // e.name は 'Error'
+
+e.name = 'ParseError';
+throw e;
+// e.toString() would return 'ParseError: Malformed input'
+
+ +

仕様書

+ + + + + + + + + + +
仕様書
{{SpecName('ESDraft', '#sec-error.prototype.name', 'Error.prototype.name')}}
+ +

ブラウザーの互換性

+ +
+ + +

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

+
+ +

関連情報

+ + diff --git a/files/ja/web/javascript/reference/global_objects/error/stack/index.html b/files/ja/web/javascript/reference/global_objects/error/stack/index.html new file mode 100644 index 0000000000..7cfbd46658 --- /dev/null +++ b/files/ja/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 + - Property + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error/Stack +--- +
{{JSRef}} {{non-standard_header}}
+ +

{{jsxref("Error")}} オブジェクトの標準外の stack プロパティは、呼び出された関数のトレース、つまり、その呼び出し順、呼び出したファイルの行番号、呼び出した関数の引数を提供します。スタック文字列は、最後の呼び出しから最初の呼び出しへ進み、元のグローバルスコープの呼び出しまで遡ります。

+ +

解説

+ +

各ステップは改行で区切られ、行の先頭は関数名 (グローバルスコープからの呼び出しでない場合)、次に @ 記号、ファイルの場所 (エラーが投げられている時に関数がエラーコンストラクターである場合を除く)、コロン記号、ファイルの場所がある場合は行番号の順に続きます。(ただし、{{jsxref("Error")}} オブジェクトも、投げられたエラーから取り戻すため fileName および lineNumbercolumnNumber プロパティを所有することに注意してください。これはエラーのみであり、そのトレースではありません。)

+ +

これは Firefox だけで使用される書式であることに注意してください。スタックトレースに標準の書式はありません。しかし、Safari 6 以降と Opera 12 以前ではとてもよく似た書式を使用します。一方で、V8 JavaScript エンジンを搭載したブラウザー (Chrome、Opera 15 以降、Android Browser など) や IE 10 以降のブラウザーは異なる書式を使用します (アーカイブされたMSDN の error.stack ドキュメントを参照)。

+ +

スタック上の引数の値: Firefox 14 以前 ({{bug("744842")}}) で、関数名は、文字列に変換され括弧で囲まれた引数の値に続き、@ 記号の直前に置かれます。オブジェクト (または配列等) は変換された形式 "[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 の実装とも一致するようです。

+ +

+ +

stack プロパティの使用

+ +

次の HTML マークアップは、stack プロパティの使用を実演します。

+ +
<!DOCTYPE HTML>
+<meta charset="UTF-8">
+<title>Stack Trace Example</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('first call, firstarg');
+</script>
+
+ +

上記のマークアップは、Windows ファイルシステム上の C:\example.html に保存されているものと仮定します。これは、次のテキストを含む警告メッセージを生成します:

+ +

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("first call, firstarg")@file:///C:/example.html:19
+@file:///C:/example.html:21
+ +

eval によるコードのスタック

+ +

Firefox 30 {{geckoRelease("30")}} 以降、Function() および eval() 呼び出し内のコードのエラースタックは、各呼び出しに、行番号と列番号についての詳細情報を含むスタックを生成するようになりました。関数呼び出しは、"> 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
+
+ +

//# sourceURL ディレクティブを使用して eval ソースに名前を付けることもできます。 Debugger ドキュメント内の eval ソースのデバッグブログ記事 も参照してください。

+ +

仕様書

+ +

仕様の一部ではありません。

+ +

ブラウザーの互換性

+ +
+ + +

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

+
+ +

関連情報

+ + diff --git a/files/ja/web/javascript/reference/global_objects/error/tosource/index.html b/files/ja/web/javascript/reference/global_objects/error/tosource/index.html new file mode 100644 index 0000000000..52085a0de4 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/error/tosource/index.html @@ -0,0 +1,58 @@ +--- +title: Error.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Error/toSource +tags: + - Error + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource +--- +
{{JSRef}} {{non-standard_header}}
+ +

toSource() メソッドは、同じエラーを評価できるコードを返します。

+ +

構文

+ +
e.toSource()
+ +

返値

+ +

エラーのソースコードを含む文字列。

+ +

解説

+ +

Using toSource

+ +

{{jsxref("Error")}} インスタンス (NativeErrors を含む) の toSource メソッドを呼び出すと、エラーのソースコードを含む文字列を返します。この文字列を評価して (ほぼ) 等しいオブジェクトを生成できます。通常、この文字列には、{{jsxref("Error")}} コンストラクターの構造に続けて下記のようにソースが含まれます。

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

これらの属性は、それぞれのエラーインスタンスの各属性に相当します。

+ +
+

注: この文字列の生成で toSource メソッドにより使用されるプロパティは変更可能であり、エラーインスタンスの生成に使用された関数、または実際にエラーが起こった場所のファイル名、行番号を正確に反映しない可能性があることに注意してください。

+
+ +

仕様書

+ +

仕様の一部ではありません。

+ +

ブラウザーの互換性

+ +
+ + +

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

+
+ +

関連情報

+ + diff --git a/files/ja/web/javascript/reference/global_objects/error/tostring/index.html b/files/ja/web/javascript/reference/global_objects/error/tostring/index.html new file mode 100644 index 0000000000..c08e5ffc25 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/error/tostring/index.html @@ -0,0 +1,100 @@ +--- +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}}
+ +

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

+ +

toString() の使用

+ +
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 = 'hello';
+console.log(e.toString()); // 'hello'
+
+ +

仕様書

+ + + + + + + + + + + + +
仕様書
{{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}
+ +

ブラウザーの互換性

+ +
+ + +

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

+
+ +

関連情報

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