エラー (Error)
JavaScriptでのエラーを取り扱います。 エラーオブジェクトを生成します。
文法
new Error([message[, fileName[, lineNumber]]])
引数 | 説明 |
---|---|
message |
人が読むことの出来るエラーの説明を指定します。 |
fileName |
非標準
作成されるErrorオブジェクトの |
lineNumber |
非標準
作成されるErrorオブジェクトの |
説明
ランタイムエラーの結果、Errorオブジェクトがnewにより作成され、スローされます。
このページのドキュメントでは、Errorオブジェクトの使用、コンストラクタ関数としての使用について説明します。
Error
インスタンスによって継承されるプロパティとメソッドの一覧は、
Error.prototypeを参照してください。
エラーのタイプ
一般的なErrorコンストラクタに加えて、JavaScript内には他に6つの核となるエラーコンストラクタが存在します。 クライアントサイドの例外(Exception)については、 Exception Handling Statementsを参照してください。
エラーインスタンス
全てのErrorインスタンスと、一般的ではな無いエラーのインスタンスは、 Error.prototypeから継承されます。 他の全てのコンストラクタ関数のように、コンストラクタのprototypeを使用して、そのコンストラクタで作成された全てのインスタンスに、 プロパティまたはメソッドを追加することが可能です。
例
例: 通常のエラーのスロー
通常、Errorオブジェクトの作成はthrowキーワードを使用して発生させる事が多いと思います。 エラーはtry...catchコンストラクタを使用して扱う事が可能です。
try {
throw new Error("Whoops!");
} catch (e) {
alert(e.name + ": " + e.message);
}
例:特定のエラーの扱い
エラーのコンストラクタのプロパティ、または、 もしモダンなJavaScriptエンジン上でスクリプトを書いているのであれば、 instanceofを使用して、 エラーのタイプを検証することによって特定のエラータイプのみを扱うように選択することが可能です。
try {
foo.bar();
} catch (e) {
if (e instanceof EvalError) {
alert(e.name + ": " + e.message);
} else if (e instanceof RangeError) {
alert(e.name + ": " + e.message);
}
// ... etc
}
カスタムエラータイプ
あなたは、new MyError()
としてスロー可能な、
Error
から引き出せるオリジナルのエラータイプを定義し、
例外ハンドラ内でエラーの種類の確認にinstanceof MyError
を使用出来るようにしたいと考えているかもしれません。
下記にそれを行う一般的なデモがありますので、確認してください。
スローされるMyErrorは、少なくともFirefoxでは正確ではないlineNumber
とfileName
を持つことに注意してください。
exception - What's a good way to extend Error in JavaScript? - Stack Overflowも、 確認してみてください。
// Errorコンストラクタからプロトタイプ継承を行う、
// 新しいオブジェクトを作成します。
function MyError(message) {
this.name = "MyError";
this.message = message || "Default Message";
}
MyError.prototype = new Error();
MyError.prototype.constructor = MyError;
try {
throw new MyError();
} catch (e) {
console.log(e.name); // "MyError"
console.log(e.message); // "Default Message"
}
try {
throw new MyError("custom message");
} catch (e) {
console.log(e.name); // "MyError"
console.log(e.message); // "custom message"
}
関連項目
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。