エラー (Error)

JavaScriptでのエラーを取り扱います。 エラーオブジェクトを生成します。

文法

new Error([message[, fileName[, lineNumber]]])
引数 説明
message

人が読むことの出来るエラーの説明を指定します。

fileName

非標準

作成されるErrorオブジェクトのfileNameプロパティとなる値を指定します。 デフォルトは、Error()コンストラクタが呼ばれるコードが含まれているファイルの名前になります。

lineNumber

非標準

作成されるErrorオブジェクトのlineNumberプロパティとなる値を指定します。 デフォルトは、Error()コンストラクタ実行が含まれる行数になります。

説明

ランタイムエラーの結果、Errorオブジェクトがnewにより作成され、スローされます。

このページのドキュメントでは、Errorオブジェクトの使用、コンストラクタ関数としての使用について説明します。 Errorインスタンスによって継承されるプロパティとメソッドの一覧は、 Error.prototypeを参照してください。

エラーのタイプ

一般的なErrorコンストラクタに加えて、JavaScript内には他に6つの核となるエラーコンストラクタが存在します。 クライアントサイドの例外(Exception)については、 Exception Handling Statementsを参照してください。

EvalError
グローバル関数のeval()に関係するエラーが発生した事を表すインスタンスを作成します。
RangeError
数値または引数が有効な範囲外であるとするエラーが発生した事を表すインスタンスを作成します。
ReferenceError
無効な参照先に対して参照をしたとするエラーが発生した事を表すインスタンスを作成します。
SyntaxError
eval()内のコード解析中に文法エラーが発生した事を表すインスタンスを作成します。
TypeError
変数または引数が有効な方ではないとするエラーが発生した事を表すインスタンスを作成します。
URIError
encodeURI()またはdecodeURI()に、 無効な引数が渡されたとされるエラーが発生した事を表すインスタンスを作成します。

エラーインスタンス

全ての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では正確ではないlineNumberfileNameを持つことに注意してください。

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"
}

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。