diff options
| author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
|---|---|---|
| committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
| commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
| tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/web/javascript/reference/global_objects/error | |
| parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
| download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip | |
initial commit
Diffstat (limited to 'files/ja/web/javascript/reference/global_objects/error')
10 files changed, 824 insertions, 0 deletions
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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p><code><strong>columnNumber</strong></code> プロパティは、このエラーを起こしたファイルの行内の列番号が入ります。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_columnNumber" name="Using_columnNumber">columnNumber の使用</h3> + +<pre class="brush: js notranslate">var e = new Error('Could not parse input'); +throw e; +console.log(e.columnNumber) // 0 +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<p>仕様の一部ではありません。</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error.columnNumber")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("Error.prototype.stack")}}</li> + <li>{{jsxref("Error.prototype.lineNumber")}}</li> + <li>{{jsxref("Error.prototype.fileName")}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p><span class="seoSummary"><strong><code>Error</code></strong> コンストラクターは、エラーオブジェクトを生成します。</span></p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate">new Error([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre> + +<h3 id="Parameters" name="Parameters">引数</h3> + +<dl> + <dt><code><var>message</var></code>{{Optional_Inline}}</dt> + <dd>人間が読めるエラーの説明。</dd> + <dt><code><var>fileName</var></code> {{Optional_Inline}}{{Non-standard_inline}}</dt> + <dd>生成された <code>Error</code> オブジェクト上の <code><var>fileName</var></code> プロパティに設定される値。既定では、<code>Error()</code> コンストラクターを呼び出したコードを含むファイルの名前です。</dd> + <dt><code><var>lineNumber</var></code> {{Optional_Inline}}{{Non-standard_inline}}</dt> + <dd>生成された <code>Error</code> オブジェクト上の <code><var>lineNumber</var></code> プロパティに設定される値。既定では、<code>Error()</code> コンストラクターの呼び出しを含む行番号。</dd> +</dl> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Function_call_or_new_construction" name="Function_call_or_new_construction">関数呼び出しか new による構築か</h3> + +<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; notranslate">// これは... +const x = Error('関数呼び出しによって生成されました。') + +// ...これと同じ機能です。 +const y = new Error('"new" キーワードによって生成されました。')</pre> + +<h2 id="Specifications" name="Specifications">仕様書</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="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error.Error")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{JSxRef("Statements/throw", "throw")}}</li> + <li>{{JSxRef("Statements/try...catch", "try...catch")}}</li> +</ul> 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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p><code><strong>fileName</strong></code> プロパティは、このエラーを起こしたファイルへのパスを含みます。</p> + +<h2 id="Description" name="Description">解説</h2> + +<p>この標準外のプロパティは、このエラーを起こしたファイルへのパスが入ります。デバッガーのコンテキストから呼び出された場合、例えば Firefox 開発ツールでは、"debugger eval code" が返されます。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_fileName" name="Using_fileName">fileName の使用</h3> + +<pre class="brush: js notranslate">var e = new Error('Could not parse input'); +throw e; +// e.fileName could look like "file:///C:/example.html" +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<p>仕様の一部ではありません。</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error.fileName")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("Error.prototype.stack")}}</li> + <li>{{jsxref("Error.prototype.columnNumber")}}</li> + <li>{{jsxref("Error.prototype.fileName")}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p><code>Error</code> オブジェクトは、実行時エラーが発生した時に発生します。 <code>Error</code> オブジェクトは、ユーザー定義の例外の基底オブジェクトとして使用することもできます。標準の組み込みエラー型については下記を参照してください。</p> + +<h2 id="Description" name="Description">解説</h2> + +<p>実行時エラーが発生すると、新しい <code>Error</code> オブジェクトが生成されスローされます。</p> + +<h3 id="Error_types" name="Error_types">エラーの型</h3> + +<p>JavaScript には、一般的な <code>Error</code> コンストラクターの他に、中核となる 7 つのエラーコンストラクターがあります。クライアント側の例外については、<a href="/ja/docs/Web/JavaScript/Guide/Statements#Exception_handling_statements">例外処理文</a>を参照してください。</p> + +<dl> + <dt>{{JSxRef("EvalError")}}</dt> + <dd>グローバル関数 {{JSxRef("eval", "eval()")}} に関して発生するエラーを表すインスタンスを生成します。</dd> + <dt>{{JSxRef("InternalError")}}</dt> + <dd>"too much recursion" (深すぎる再帰) など、JavaScript エンジンで内部エラーが発生した時に発生するエラーを表すインスタンスを生成します。</dd> + <dt>{{JSxRef("RangeError")}}</dt> + <dd>数値変数または引数が、その有効範囲外である場合に発生するエラーを表すインスタンスを生成します。</dd> + <dt>{{JSxRef("ReferenceError")}}</dt> + <dd>不正な参照から参照先の値を取得した時に発生するエラーを表すインスタンスを生成します。</dd> + <dt>{{JSxRef("SyntaxError")}}</dt> + <dd>構文エラーを表すインスタンスを生成します。</dd> + <dt>{{JSxRef("TypeError")}}</dt> + <dd>変数または引数の型が有効でない場合に発生するエラーを表すインスタンスを生成します。</dd> + <dt>{{JSxRef("URIError")}}</dt> + <dd>{{JSxRef("encodeURI", "encodeURI()")}} または {{JSxRef("decodeURI", "decodeURI()")}} に不正な引数が渡された時に発生するエラーを表すインスタンスを生成します。</dd> +</dl> + +<h2 id="Constructor" name="Constructor">コンストラクター</h2> + +<dl> + <dt>{{jsxref("Error/Error", "Error()")}}</dt> + <dd>新しい <code>Error</code> オブジェクトを生成します。</dd> +</dl> + +<h2 id="Static_methods" name="Static_methods">静的メソッド</h2> + +<dl> + <dt>{{JSxRef("Error.captureStackTrace()")}}</dt> + <dd>標準外の <strong>V8</strong> の関数で、 Error インスタンスに {{JSxRef("Error.prototype.stack", "stack")}} プロパティを生成します。</dd> +</dl> + +<h2 id="Instance_properties" name="Instance_properties">インスタンスプロパティ</h2> + +<dl> + <dt>{{jsxref("Error.prototype.message")}}</dt> + <dd>エラーメッセージ。</dd> + <dt>{{jsxref("Error.prototype.name")}}</dt> + <dd>エラーの名称。</dd> + <dt>{{jsxref("Error.prototype.description")}}</dt> + <dd>標準外の Microsoft のプロパティで、エラーの説明です。 {{jsxref("Error.prototype.message", "message")}} と似ています。</dd> + <dt>{{jsxref("Error.prototype.number")}}</dt> + <dd>標準外の Microsoft のプロパティで、エラー番号です。</dd> + <dt>{{jsxref("Error.prototype.fileName")}}</dt> + <dd>標準外の Mozilla のプロパティで、このエラーが発生したファイルへのパスです。</dd> + <dt>{{jsxref("Error.prototype.lineNumber")}}</dt> + <dd>標準外の Mozilla のプロパティで、このエラーが発生したファイル内の行番号です。</dd> + <dt>{{jsxref("Error.prototype.columnNumber")}}</dt> + <dd>標準外の Mozilla のプロパティで、このエラーが発生した行内の桁番号です。</dd> + <dt>{{jsxref("Error.prototype.stack")}}</dt> + <dd>標準外の Mozilla プロパティで、スタックトレースです。</dd> +</dl> + +<h2 id="Instance_methods" name="Instance_methods">インスタンスメソッド</h2> + +<dl> + <dt>{{jsxref("Error.prototype.toString()")}}</dt> + <dd>指定したオブジェクトを表す文字列を返します。{{jsxref("Object.prototype.toString()")}} メソッドを上書きします。</dd> +</dl> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Throwing_a_generic_error" name="Throwing_a_generic_error">一般的なエラーを発生させる</h3> + +<p>通常、{{JSxRef("Statements/throw", "throw")}} キーワードを使い意図的にエラーを発生させて <code>Error</code> オブジェクトを生成します。 {{JSxRef("Statements/try...catch", "try...catch")}} 構文を使用してエラーを処理してください:</p> + +<pre class="brush: js; notranslate">try { + throw new Error('Whoops!') +} catch (e) { + console.error(e.name + ': ' + e.message) +} +</pre> + +<h3 id="Handling_a_specific_error" name="Handling_a_specific_error">特定のエラーを処理する</h3> + +<p>エラーの {{JSxRef("Object.prototype.constructor", "constructor")}} プロパティでエラー型をテストすることにより、特定のエラー型だけを選んで処理できます。または、最近の JavaScript エンジン向けに書いているのであれば、{{JSxRef("Operators/instanceof", "instanceof")}} キーワードが使えます:</p> + +<pre class="brush: js; notranslate">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 +} +</pre> + +<h3 id="Custom_Error_Types" name="Custom_Error_Types">独自のエラー型</h3> + +<p><code>Error</code> から派生した独自のエラー型を定義して <code>throw new CustomError()</code> ができるようにし、<code>instanceof CustomError</code> で例外ハンドラー内のエラーの種類を確認したいでしょう。これを行う一般的な方法の実例を以下に示します。</p> + +<p>StackOverflow の突っ込んだ議論、 <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> も参照してください。</p> + +<h4 id="ES6_Custom_Error_Class" name="ES6_Custom_Error_Class">ES6 独自のエラークラス</h4> + +<div class="warning"> +<p>Babel 7 以前では独自のエラークラスのメソッドを使用することができますが、 <a href="/ja/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="blockIndicator note"> +<p>ES2015 クラスを使用した場合、一部のブラウザのスタックトレース上に、 CustomError コンストラクタが含まれます。</p> +</div> + +<pre class="brush: js notranslate">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 +}</pre> + +<h4 id="ES5_Custom_Error_Object" name="ES5_Custom_Error_Object">ES5 独自のエラーオブジェクト</h4> + +<div class="warning"> +<p><strong>すべて</strong>のブラウザーのスタックトレース上に、 <code>CustomError</code> コンストラクターが含まれます。</p> +</div> + +<pre class="brush: js notranslate">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="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{JSxRef("Statements/throw", "throw")}}</li> + <li>{{JSxRef("Statements/try...catch", "try...catch")}}</li> +</ul> 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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p><code><strong>lineNumber</strong></code> プロパティは、このエラーを起こしたファイル内の行番号が入ります。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Using_lineNumber" name="Using_lineNumber">lineNumber の使用</h3> + +<pre class="brush: js notranslate">var e = new Error('Could not parse input'); +throw e; +console.log(e.lineNumber) // 2 +</pre> + +<h3 id="Alternative_example_using_error_event" name="Alternative_example_using_error_event">error イベントを使用した他の例</h3> + +<pre class="brush: js notranslate">window.addEventListener('error', function(e) { + console.log(e.lineNumber); // 5 +}); +var e = new Error('入力を解釈できません'); +throw e; +</pre> + +<p>これは標準の機能ではなく、幅広く対応されていません。下記のブラウザーの互換性の表をご覧ください。</p> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<p>仕様の一部ではありません。</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error.lineNumber")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("Error.prototype.stack")}}</li> + <li>{{jsxref("Error.prototype.columnNumber")}}</li> + <li>{{jsxref("Error.prototype.fileName")}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p><code><strong>message</strong></code> プロパティは、人間が読めるエラーの説明です。</p> + +<h2 id="Description" name="Description">解説</h2> + +<p>このプロパティは、利用可能または設定されている場合、エラーの簡潔な説明を含みます。<a href="/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> は、例外の <code>message</code> プロパティを広範囲に渡って使用します。{{jsxref("Error.prototype.name", "name")}} プロパティは <code>message</code> プロパティとの組み合わせで、Error の文字列表現を生成するために {{jsxref("Error.prototype.toString()")}} メソッドにより使用されます。</p> + +<p>既定で <code>message</code> プロパティは空文字列ですが、この振る舞いは、 {{jsxref("Error/Error", "Error")}} コンストラクターの第一引数としてメッセージを指定することにより、インスタンスを上書きできます。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Throwing_a_custom_error" name="Throwing_a_custom_error">独自のエラーを発生させる</h3> + +<pre class="brush: js notranslate">var e = new Error('Could not parse input'); +// e.message は 'Could not parse input' +throw e; +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</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="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error.name")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("Error.prototype.name")}}</li> + <li>{{jsxref("Error.prototype.toString()")}}</li> +</ul> 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 +--- +<div>{{JSRef}}</div> + +<p><code><strong>name</strong></code> プロパティは、エラーの種類の名称を表します。初期値は "Error" です。</p> + +<h2 id="Description" name="Description">解説</h2> + +<p>既定で {{jsxref("Error")}} インスタンスには "Error" という名称が与えられます。 <code>name</code> プロパティは {{jsxref("Error.prototype.message", "message")}} プロパティに加えて、 Error の文字列表現を生成するため、{{jsxref("Error.prototype.toString()")}} メソッドにより使用されます。</p> + +<h2 id="Examples" name="Examples">例</h2> + +<h3 id="Throwing_a_custom_error" name="Throwing_a_custom_error">独自のエラーを発生させる</h3> + +<pre class="brush: js notranslate">var e = new Error('Malformed input'); // e.name は 'Error' + +e.name = 'ParseError'; +throw e; +// e.toString() would return 'ParseError: Malformed input' +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</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="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error.name")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("Error.prototype.message")}}</li> + <li>{{jsxref("Error.prototype.toString()")}}</li> +</ul> 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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>{{jsxref("Error")}} オブジェクトの標準外の <strong><code>stack</code></strong> プロパティは、呼び出された関数のトレース、つまり、その呼び出し順、呼び出したファイルの行番号、呼び出した関数の引数を提供します。スタック文字列は、最後の呼び出しから最初の呼び出しへ進み、元のグローバルスコープの呼び出しまで遡ります。</p> + +<h2 id="Description" name="Description">解説</h2> + +<p>各ステップは改行で区切られ、行の先頭は関数名 (グローバルスコープからの呼び出しでない場合)、次に <code>@</code> 記号、ファイルの場所 (エラーが投げられている時に関数がエラーコンストラクターである場合を除く)、コロン記号、ファイルの場所がある場合は行番号の順に続きます。(ただし、{{jsxref("Error")}} オブジェクトも、投げられたエラーから取り戻すため <code>fileName</code> および <code>lineNumber</code>、<code>columnNumber</code> プロパティを所有することに注意してください。これはエラーのみであり、そのトレースではありません。)</p> + +<p>これは Firefox だけで使用される書式であることに注意してください。スタックトレースに標準の書式はありません。しかし、Safari 6 以降と Opera 12 以前ではとてもよく似た書式を使用します。一方で、V8 JavaScript エンジンを搭載したブラウザー (Chrome、Opera 15 以降、Android Browser など) や IE 10 以降のブラウザーは異なる書式を使用します (<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 以前 ({{bug("744842")}}) で、関数名は、文字列に変換され括弧で囲まれた引数の値に続き、<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="Example" name="Example">例</h2> + +<h3 id="Using_the_stack_property" name="Using_the_stack_property">stack プロパティの使用</h3> + +<p>次の HTML マークアップは、<code>stack</code> プロパティの使用を実演します。</p> + +<pre class="brush: html notranslate"><!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> +</pre> + +<p>上記のマークアップは、Windows ファイルシステム上の <code>C:\example.html</code> に保存されているものと仮定します。これは、次のテキストを含む警告メッセージを生成します:</p> + +<p>Firefox 30 以降では、列番号が含まれます。</p> + +<pre class="notranslate"><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 class="notranslate"><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 class="notranslate"><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("first call, firstarg")@file:///C:/example.html:19 +@file:///C:/example.html:21</samp></pre> + +<h3 id="Stack_of_evaled_code" name="Stack_of_evaled_code">eval によるコードのスタック</h3> + +<p>Firefox 30 {{geckoRelease("30")}} 以降、<code>Function()</code> および <code>eval()</code> 呼び出し内のコードのエラースタックは、各呼び出しに、行番号と列番号についての詳細情報を含むスタックを生成するようになりました。関数呼び出しは、<code>"> Function"</code> で示され、eval 呼び出しは、<code>"> eval"</code> で示されます。{{bug("332176")}} を参照してください。</p> + +<pre class="brush: js notranslate">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> ディレクティブを使用して eval ソースに名前を付けることもできます。 <a href="/docs/Tools/Debugger">Debugger</a> ドキュメント内の <a href="/docs/Tools/Debugger/How_to/Debug_eval_sources">eval ソースのデバッグ</a> と <a href="http://fitzgeraldnick.com/weblog/59/" title="Naming `eval` Scripts with the `//# sourceURL` Directive">ブログ記事</a> も参照してください。</p> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<p>仕様の一部ではありません。</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error.stack")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li><a href="/ja/docs/Components.stack">Components.stack</a></li> + <li>外部プロジェクト: <a class="link-https" href="https://github.com/csnover/TraceKit/">TraceKit</a> および <a class="link-https" href="https://github.com/eriwen/javascript-stacktrace">javascript-stacktrace</a></li> + <li>MSDN: <a class="external" href="https://web.archive.org/web/20140210004225/http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">error.stack</a> のドキュメントのアーカイブ</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/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 +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p><code><strong>toSource()</strong></code> メソッドは、同じエラーを評価できるコードを返します。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox notranslate"><var>e</var>.toSource()</pre> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p>エラーのソースコードを含む文字列。</p> + +<h2 id="Description" name="Description">解説</h2> + +<h3 id="Using_toSource">Using toSource</h3> + +<p>{{jsxref("Error")}} インスタンス (<em><a href="/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types">NativeErrors</a></em> を含む) の <code>toSource</code> メソッドを呼び出すと、エラーのソースコードを含む文字列を返します。この文字列を評価して (ほぼ) 等しいオブジェクトを生成できます。通常、この文字列には、{{jsxref("Error")}} コンストラクターの構造に続けて下記のようにソースが含まれます。</p> + +<pre class="brush: js notranslate">(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="Specifications" name="Specifications">仕様書</h2> + +<p>仕様の一部ではありません。</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error.toSource")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</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/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 +--- +<div>{{JSRef}}</div> + +<p><code><strong>toString()</strong></code> メソッドは、指定した {{jsxref("Error")}} オブジェクトを表す文字列を返します。</p> + +<h2 id="Syntax" name="Syntax">構文</h2> + +<pre class="syntaxbox"><code><var>e</var>.toString()</code></pre> + +<h3 id="Return_value" name="Return_value">返値</h3> + +<p>指定した {{jsxref("Error")}} オブジェクトを表す文字列です。</p> + +<h2 id="Description" name="Description">解説</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="Examples" name="Examples">例</h2> + +<h3 id="Using_toString" name="Using_toString">toString() の使用</h3> + +<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 = 'hello'; +console.log(e.toString()); // 'hello' +</pre> + +<h2 id="Specifications" name="Specifications">仕様書</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">仕様書</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> + +<div> +<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div> + +<p>{{Compat("javascript.builtins.Error.toString")}}</p> +</div> + +<h2 id="See_also" name="See_also">関連情報</h2> + +<ul> + <li>{{jsxref("Error.prototype.toSource()")}}</li> +</ul> |
