これはセキュアなソフトウェア開発に関するラボ演習です。 ラボの詳細については、概要をご覧ください。
例外ハンドリングの仕組みを活用して、下記のコードの堅牢性を高めましょう。
この演習では、リターンコードの仕組みから例外ハンドリングに移行することで、JavaScriptの関数の堅牢性をどのように高めるかを例示します。 一番の目標はエラーをより効果的に対処する方法を理解することで、これによりコードの可読性やメンテナンス性を高めることができます。
最初に、このコードは、起こりうるエラーを対処するために、リターンコードの仕組みを用いています。 divide関数は、処理が成功したかエラーが起きたかを表すオブジェクトを返します。 呼び出し元では、successプロパティをチェックして、正常な結果かエラーにそれぞれ対処する必要があります。 この方法でも動作はしますが、エラーをチェックするロジックが繰り返されてコードが汚くなりかねません。なお悪いことに、呼び出し元がエラーというリターンコードを無視してしまうと、予期しない失敗やセキュリティ脆弱性を引き起こすことすらありえます。
以下のコードを修正して、例外ハンドリングの仕組みを活用し堅牢性を高めてください。
不正な処理が検出されたとき(この場合は、0で割ったとき)例外を投げることによって、コードの正常フローとエラー処理のロジックを分離することができます。呼び出し元はtry..catchブロックを用いて、投げられる可能性のある例外を処理することができます。これによってコードがよりきれいになり、より堅牢となります。 このタスクを完了するには、以下を行います。必要に応じて、「ヒント」ボタンと「諦める」ボタンを使用してください。
下記のコードを変更して、divide関数とその呼び出し元がリターンコードの仕組みではなく例外ハンドリングを用いるように変更してください。 divide関数は、0による割り算が行われようとした時にエラーを投げなければなりません。 呼び出すコードは、try...catchブロックを用いてエラーを処理し、resultという定数に結果を格納し、発生したエラーはerrorという変数に受け、適切なメッセージを表示しなければなりません。