エラーオブジェクトの作成とは?
JavaScriptでは、throw文を使ってエラーをスローする際、エラーオブジェクトを作成してエラーの詳細を表すことができます。エラーオブジェクトは、エラーメッセージやスタックトレースなど、デバッグに必要な情報を含む便利なオブジェクトです。これにより、エラーが発生した理由や発生場所を特定しやすくなります。
エラーオブジェクトの種類
JavaScriptには、標準で提供されているいくつかのエラーオブジェクトがあります。これらは、エラーの種類に応じて自動的に生成されるか、手動で作成することができます。代表的なエラーオブジェクトは以下の通りです。
| エラーオブジェクト | 説明 |
|---|---|
Error |
一般的なエラーを表すオブジェクト。独自エラーのベースとして使用される。 |
ReferenceError |
存在しない変数を参照した場合にスローされるエラー。 |
TypeError |
無効なデータ型に対して操作を行った場合にスローされるエラー。 |
SyntaxError |
構文が正しくない場合にスローされるエラー。 |
RangeError |
無効な数値範囲を使用した場合にスローされるエラー。 |
URIError |
無効なURI(エンコードやデコード時のエラー)に対してスローされるエラー。 |
エラーオブジェクトの作成とスロー
エラーオブジェクトは、throw文を使ってスローすることができます。Errorオブジェクトは、カスタムエラーメッセージを持たせることが可能です。また、独自のエラーオブジェクトを作成することで、特定の状況に応じたエラーメッセージやエラー処理をカスタマイズすることができます。
プログラムの解説
以下の例では、Errorオブジェクトを作成してカスタムメッセージをスローしています。
function checkValue(value) {
if (value < 0) {
throw new Error("値が0未満です: " + value); // エラーオブジェクトを作成してスロー
}
return "値は正常です: " + value;
}
try {
console.log(checkValue(-1)); // エラーを発生させる
} catch (error) {
console.error("エラーが発生しました: " + error.message); // エラーをキャッチして処理
}
このJavaScriptコードでは、値が0未満の場合にErrorオブジェクトを作成し、エラーメッセージと共にスローします。try...catch構文を使ってエラーをキャッチし、エラーメッセージがコンソールに表示されます。
カスタムエラーオブジェクトの作成
JavaScriptでは、Errorクラスを継承してカスタムエラーを作成することも可能です。これにより、独自のエラータイプを定義し、特定の状況に応じたエラー処理を行うことができます。
カスタムエラーオブジェクトの例
class CustomError extends Error {
constructor(message) {
super(message);
this.name = "CustomError"; // エラー名をカスタマイズ
}
}
function processValue(value) {
if (value > 100) {
throw new CustomError("値が100を超えています: " + value);
}
return "処理が完了しました: " + value;
}
try {
console.log(processValue(150)); // カスタムエラーをスロー
} catch (error) {
console.error(error.name + ": " + error.message); // カスタムエラーをキャッチして処理
}
この例では、CustomErrorクラスを定義し、通常のErrorクラスを継承しています。これにより、独自のエラータイプを作成し、エラーの名前やメッセージを自由にカスタマイズできます。
エラーオブジェクトのプロパティ
標準的なエラーオブジェクトには、以下のプロパティがあります。これらを使用してエラーの詳細を取得できます。
| プロパティ | 説明 |
|---|---|
name |
エラーの名前。たとえば、TypeErrorやReferenceError。 |
message |
エラーのメッセージ。 |
stack |
エラーが発生した時点のスタックトレース。 |
まとめ
JavaScriptでは、throw文を使ってエラーオブジェクトをスローし、エラーメッセージやエラータイプを詳細に定義することができます。標準のエラーオブジェクトを利用するだけでなく、カスタムエラーを作成することで、特定の状況に応じたエラーハンドリングを行うことができます。また、エラーオブジェクトのプロパティを活用して、エラーの詳細な情報を取得することが可能です。