Node.jsで開発をしていると、エラーハンドリングが重要な課題になります。
特に、エラーを適切に発生させ、処理の中で適切に捕捉することは、品質の高いシステムを構築する上で欠かせません。
本記事では、エラーオブジェクトの投げ方について詳しく解説します。
なぜError
オブジェクトを使うべきか
JavaScriptでは、単にオブジェクトをthrow
することも可能ですが、エラーのスタックトレースを適切に保持し、デバッグしやすくするためには、Error
オブジェクトを使用するのが望ましいです。
例えば、以下のようなコードは適切ではありません。
このコードでは、単なるオブジェクトを投げています。catch
節で受け取った際に、Error
オブジェクトでないためスタックトレースがなく、エラーの発生箇所を特定しにくくなります。
Error
オブジェクトを適切に使う方法
new Error()
を使う
エラーメッセージを適切に設定するには、new Error()
を使用します。
これにより、エラーメッセージが message
プロパティに格納され、catch
節で適切に処理できます。
Error
オブジェクトに追加情報を持たせる
エラーコードを含めたい場合、以下のようにオブジェクトを拡張できます。
catch
節で error.code
を参照できるため、エラーの種類を判別しやすくなります。
Object.assign
を使う
よりコンパクトに書く方法として Object.assign
を使う方法があります。
これにより、new Error()
で作成したオブジェクトに code
プロパティを追加できます。
スプレッド構文を使う
Object.assign
の代わりにスプレッド構文も使えます。
ただし、この方法は Error
オブジェクトではなく通常のオブジェクトをthrow
することになるため、スタックトレースが適切に取得できない可能性があります。
Error
を拡張したカスタムエラークラスを作る
大規模なシステムでは、エラーの種類を明確にするために、Error
を拡張した独自のエラークラスを作成するのが有効です。
カスタムエラーのメリット
instanceof
を使ってエラーの種類を判別可能catch
節で特定のエラーのみ処理することが可能
例えば、以下のように catch
節でエラーの種類を判別できます。
まとめ
エラーを適切に投げることで、デバッグやエラーハンドリングの精度が向上します。
本記事で紹介した方法を活用し、より堅牢なシステムを構築してください。
Error
オブジェクトを使用し、スタックトレースを保持するcode
などの追加情報を持たせるObject.assign
やスプレッド構文を活用する- カスタムエラークラスを作成し、エラーの種類を明確化する
適切なエラーハンドリングを実装し、エラーの発生を素早く特定できるようにしましょう。
コメント