問題を示すために指定された値が返されるかどうかを確認できるときに、try/catch ステートメントを使用するほうがよい理由はありますか?
たとえば、関数は数値を素因数分解します。負の整数が渡された場合、例外がスローされるか、特定の値が返される方が「良い」でしょう (これは正当な値ではありません。たとえば、-1 です)。
関数が何かを返す必要がない場合、何かをスローするのではなく、成功時に true を返し、失敗時に false を返す方が効率が悪いでしょうか?
問題を示すために指定された値が返されるかどうかを確認できるときに、try/catch ステートメントを使用するほうがよい理由はありますか?
たとえば、関数は数値を素因数分解します。負の整数が渡された場合、例外がスローされるか、特定の値が返される方が「良い」でしょう (これは正当な値ではありません。たとえば、-1 です)。
関数が何かを返す必要がない場合、何かをスローするのではなく、成功時に true を返し、失敗時に false を返す方が効率が悪いでしょうか?
例外は、介在する呼び出しフレームに追加のコードを追加せずに、一度に複数の呼び出しフレームに伝播して、エラー条件/リターンをチェックできます。これは、すべての呼び出しレベルで戻り値のチェックに基づくコードよりも (少なくともエラーでない場合には) パフォーマンスが向上する可能性があることを意味します。それがおそらく主な具体的な利点です。
Try/Catch の使用とブール値を返すことについては、しばらくの間議論されてきました。いくつかの洞察を追加する可能性のあるこのStackOverflow 記事を見つけました。私自身は、Try/Catch とブール値の両方を使用する傾向があります。メソッドがいつ呼び出されるかによって異なります。同様に、エラーをキャッチして効率的に処理できるように、エラーをスタックにバブルアップさせるのが最善の場合もあります。
最後に、ここで回答が得られない場合は、https://softwareengineering.stackexchange.com/を試すこともできます。