throw文の概要
| 例外のスロー JavaScript予約語 | ||
|
throw エラーオブジェクト 概要 わかりやすく説明 |
||
|
throw文の基本的な使い方
以下は、throw文を使用した基本的な例です。
// 基本的なthrowの例
function divide(a, b) {
if (b === 0) {
throw new Error("ゼロで割ることはできません。");
}
return a / b;
}
try {
console.log(divide(10, 2)); // 5
console.log(divide(10, 0)); // エラー発生
} catch (error) {
console.error("例外をキャッチしました:", error.message);
}
- 特定の条件で
throwを使用して例外をスローします。 tryブロック内で発生した例外は、catchブロックで捕捉されます。
throw文の応用例
以下は、throw文を応用した例です。
// カスタムエラーのスロー
class ValidationError extends Error {
constructor(message) {
super(message);
this.name = "ValidationError";
}
}
function validateUser(user) {
if (!user.name) {
throw new ValidationError("名前が必要です。");
}
if (user.age < 18) {
throw new ValidationError("年齢が18歳以上である必要があります。");
}
console.log("ユーザーが有効です:", user.name);
}
try {
validateUser({ name: "John", age: 17 });
} catch (error) {
if (error instanceof ValidationError) {
console.error("バリデーションエラー:", error.message);
} else {
console.error("未知のエラー:", error);
}
}
- 独自のエラークラスを作成することで、特定のエラーを区別できます。
instanceofを使用してエラーの種類を判定し、適切な処理を行います。
注意点
- 適切なエラーオブジェクトの使用: 文字列や数値をスローすることもできますが、
Errorオブジェクトを使う方が推奨されます。 - 例外処理の範囲:
throwでスローした例外がtry/catchで捕捉されない場合、プログラム全体が停止します。 - 過剰な例外処理を避ける: 全てのエラーをスローするのではなく、本当に必要な場合に限定するべきです。
よくある質問
- Q:
throw文でスローできるのはどのような値ですか? - A: 任意の値をスローできますが、通常は
Errorオブジェクトを使用します。throw "エラー"のように文字列をスローすることも可能です。 - Q:
throwとreturnの違いは何ですか? - A:
returnは関数の処理を終了し値を返しますが、throwは例外をスローして通常の実行フローを中断します。 - Q: 例外処理をどのように設計すべきですか?
- A: 重要な処理や予期しないエラーが発生する可能性がある箇所に限定して使用します。過剰に例外処理を行うと、コードが複雑になる恐れがあります。
まとめ
throw文は、エラーや例外をスローしてプログラムの通常の実行を中断し、適切なエラーハンドリングを可能にする強力な構文です。
try/catchと組み合わせて例外を安全に処理できます。- 独自のエラークラスを作成することで、特定のエラーに対する処理を分岐できます。
- 適切なエラー処理を実装することで、プログラムの信頼性を高めることが可能です。