JavaScript例外処理の違い ##
JavaScriptにおけるthrow new Error
とthrow someObject
の違い
JavaScriptでは、エラーが発生した場合にその処理を中断し、エラー情報を上位の処理に伝達するために例外を投げます。この際に使用するキーワードがthrow
です。
throw new Error()
- カスタムエラークラスの利用
独自のエラークラスを作成し、より具体的なエラー情報を提供することも可能です。 - エラーメッセージの指定
コンストラクタにエラーメッセージを指定することで、エラーの詳細を記録できます。 - 直接エラーオブジェクトを生成
new Error()
を用いて、エラーオブジェクトを直接生成します。
例
try {
// エラーが発生するコード
throw new Error("This is a custom error message.");
} catch (error) {
console.log(error.message); // "This is a custom error message."
}
throw someObject
- 柔軟なエラー処理
独自のエラー情報をカプセル化し、エラー処理の際に必要な情報を提供できます。 - 任意のオブジェクトを投げる
任意のオブジェクトをthrow
キーワードの後で指定できます。
try {
// エラーが発生するコード
throw { message: "Custom error", errorCode: 404 };
} catch (error) {
console.log(error.message); // "Custom error"
console.log(error.errorCode); // 404
}
- どちらの方法を使用するかは、エラーの種類と処理の要件によって適切に選択します。
throw someObject
は、任意のオブジェクトを投げることで、より柔軟なエラー処理を実現できます。throw new Error()
は、標準のエラーオブジェクトを生成し、エラーメッセージを指定するのに便利です。
JavaScript例外処理の違い
try {
// エラーが発生するコード
throw new Error("This is a custom error message.");
} catch (error) {
console.log(error.message); // "This is a custom error message."
}
- 説明
try
ブロック内でエラーが発生すると、throw new Error()
が実行され、エラーオブジェクトが生成されます。catch
ブロックでエラーオブジェクトを受け取り、error.message
プロパティを使用してエラーメッセージを表示します。
try {
// エラーが発生するコード
throw { message: "Custom error", errorCode: 404 };
} catch (error) {
console.log(error.message); // "Custom error"
console.log(error.errorCode); // 404
}
- 説明
try
ブロック内でエラーが発生すると、throw
キーワードの後に任意のオブジェクトを指定します。catch
ブロックでエラーオブジェクトを受け取り、オブジェクトのプロパティを使用してエラー情報を取得します。
条件文によるエラーチェック
- 直接エラーを検出
エラーが発生する可能性のある条件を事前にチェックし、エラーが発生した場合に適切な処理を行います。
if (value === null || value === undefined) {
console.error("Value is null or undefined.");
} else {
// 正常な処理
}
アサーション
- 開発段階でのエラー検出
assert
関数を使用して、プログラムの仮定が正しいことを確認します。
function divide(a, b) {
assert(b !== 0, "Cannot divide by zero.");
return a / b;
}
カスタムエラークラス
- 独自のエラー情報を提供
標準のError
クラスを継承して、独自のエラークラスを作成し、より具体的なエラー情報を提供します。
class MyCustomError extends Error {
constructor(message, errorCode) {
super(message);
this.errorCode = errorCode;
}
}
try {
// エラーが発生するコード
throw new MyCustomError("Custom error", 404);
} catch (error) {
console.log(error.message); // "Custom error"
console.log(error.errorCode); // 404
}
非同期処理のエラーハンドリング
- Promiseやasync/await
非同期処理のエラーを適切に処理するために、Promise
やasync/await
を使用します。
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response. json();
// 正常な処理
} catch (error) {
console.error(error);
}
}
- 非同期処理のエラーハンドリング
非同期処理のエラーを適切に処理します。 - カスタムエラークラス
独自のエラー情報を提供します。 - アサーション
開発段階でのエラー検出に役立ちます。 - 条件文
エラーが発生する可能性のある条件を事前にチェックします。 - 例外処理
エラーが発生した場合に処理を中断し、エラー情報を伝達します。
javascript object error-handling