皆さんに短いデザインの質問があります。できるだけ速く実行する必要があるメソッドを取得しましたが、例外によって発生したエラーに関する情報も提供する必要があります。
関数がループ内で 1000 回呼び出される場合がありますが、例外が発生することはほとんどありません (値の 1% 未満でエラーが発生します)。この関数は、非常に単純な数学演算のみを計算し、LINQ などを使用してメソッドを呼び出しません。
ここまでの状況です。以下では、この方法を解決するために必要な 2 つのシナリオについて説明します。
私自身の解決策が最も一般的な方法でした。計算の前に各パラメーターをチェックするだけです(ramainingメソッドの例外を防ぐため):
int FastMethod(int number)
{
if (number <= 0)
{
throw new ArgumentOutOfRangeException();
}
// (...) more parameter validations
// do some operations with the number here
}
私に推奨された他の解決策は、エラーが発生し、キャッチされた例外のみを再スローすることでした:
int FastMethod(int number)
{
try
{
// do some operations with the number here
}
catch (Exception ex)
{
throw (ex);
}
}
それで、あなたは何をお勧めしますか?
2 番目のシナリオでは、パフォーマンスを向上させる可能性のあるこれらすべての if ステートメントを呼び出す必要はありませんが、私の意見では設計が不十分に見えます。あなたは私に教えることができます:)