null ポインター例外が発生する可能性があると思われる場合は、変数が null でないことを確認するために if ステートメントを使用する必要がありますか、それとも単に例外をキャッチする必要がありますか?
ifステートメントまたはcatchブロックでヌルポインターを処理するロジックを配置できるため、違いはわかりません。どちらがベストプラクティスですか?
null ポインター例外が発生する可能性があると思われる場合は、変数が null でないことを確認するために if ステートメントを使用する必要がありますか、それとも単に例外をキャッチする必要がありますか?
ifステートメントまたはcatchブロックでヌルポインターを処理するロジックを配置できるため、違いはわかりません。どちらがベストプラクティスですか?
try/catchではなく、常にロジックを使用して例外をキャッチすると思います。
検証するときは Try/Catch を使用する必要がありますが、奇妙なことが起こり、エラーが発生するため、より適切に処理できます。
良い。例外はそれだけです。例外。これらは予期せぬ事態が発生したときにスローされ、通常のプログラム フローの一部であってはなりません。
そして、それがここで起こっていることです。引数が指定されていないのに、引数が指定されることを予期していました。これは予期しないことなので、独自の例外をスローしてユーザーに通知する必要があります。ボーナス ポイントを獲得したい場合は、引数を指定する必要がある理由を [理由] に含めることもできます (明確でない場合)。
例外に関する一連の投稿を書きました: http://blog.gauffin.org/2013/04/what-is-exceptions/
パフォーマンスの観点からは、実際に何をしているかに依存します。例外がスローされない場合の try/catch ブロックによるパフォーマンスへの影響は最小限です (パフォーマンスの最後の数パーセントが本当に必要な場合は、とにかくコードのその部分を C++ で書き直す必要があります)。例外のスローは、文字列操作などの単純な操作に大きな影響を与えます。しかし、ループ内でファイル/データベース操作を取得すると、非常に遅くなるため、再び些細なペナルティになります。ただし、アプリ ドメイン全体にスローすると、ほぼすべてのものに重要な影響があります。
オペレーションのパフォーマンス/秒:
Mode/operation Empty String File Database Complex
No exception 17,748,206 267,300 2,461 877 239
Catch without exception 15,415,757 261,456 2,476 871 236
Throw 103,456 68,952 2,236 864 236
Rethrow original 53,481 41,889 2,324 852 230
Throw across AppDomain 3,073 2,942 930 574 160
追加のテスト結果とテストのソースは 、.NET での例外のパフォーマンスへの影響に関する記事から入手できます。
一般に、try-catch ブロックは、例外が発生するたびに壊れる (catch ステートメントに移動する) ため、優れています。if-else ブロックは、エラーがいつ発生するかを予測することに依存しています。
また、catch ブロックは、エラーが発生したときにコードが停止するのを止めません。
ステートメントに try catch を使用することはお勧めできません。try catch それらを使用すると、何らかのエラーが発生した場合、コードがアプリケーションを起動しないように見えるためです。ただし、どのようなエラーが発生する可能性があるかがわかっている場合は、その時点でエラーをタップできます。不明なエラーは発生しません。例えば。
string name = null;
ここでは name 変数を使用しますが、これにより Null Refrance Error がスローされると確信しています。
try
{
Console.writeLine("Name ={0}",name);
}
catch (NullRefranceException nex)
{
//handle the error
}
catch(Exception ex)
{
// handle error to prevent application being crashed.
}
この種のエラーを処理してコードを読みやすくすることはできますが、これは良い方法ではありません。お気に入り。
if(name !=null)
Console.writeLine("Name ={0}",name);
私の経験では、使用する方が優れていますが、実際にヌル参照ポインターが予想さif
れる場合に限ります。少しのコードやコンテキストがなければ、あるオプションが他のオプションよりも優れているかどうかを判断するのは困難です。
try-catch
最適化の問題もあります。ブロック内のコードは最適化されません。
例外として使用if-statement
することをお勧めします。NullReference
他の例外については、try-catch
十分なはずです。
例外に if ステートメントを使用することをお勧めする理由NullReference
は、C# ではどの変数が null かがわからないためです。その行に null になる可能性のあるオブジェクトが複数ある場合、追跡が失われます。を使用している場合はif-statement
、十分な情報を取得するのに役立つ優れたロギングを使用できます。
if else以外の場合は常にTry Catchを使用することをお勧めします ここでの例外は、処理される例外とUN 処理される例外の2 つのタイプです。
ハンドルされた例外は、常にいくつかの実装を Catch ブロック Eg 内に記述できるようにします。アラート メッセージ、そのような例外が発生したときに処理する新しい関数。