2017-05-19 12 views
0

私は実際に(かなり新しいコーディングに)新しい例外処理をしていませんし、例外を捕捉する必要がある場所や例外を捕捉する必要がない場所についてはわかりません。リストをループするとNull参照例外がスローされますか?

具体的には、リストを繰り返し処理することについては不思議です。リストをループするどこでもNull参照例外をキャッチする必要がありますか?

私は、リストをループするテストコードのユニットテストがあり、リストに要素がないときに例外をスローしないので、答えはいいと思っています。

だから私は疑問に思います。リストをループするためのNull参照例外を捕捉する必要があるときと、それが不要なときをいつどのように知るのですか?

+0

リスト内の要素がnullに設定されている場合(たとえば、独自のライフサイクルでnullに設定されている場合)のみ、nullreferencesexcpetionが返されます。要素がなく、要素にアクセスしようとすると、outofbounds例外がスローされます。 –

+3

'NullReferenceException'は、特にコード内にバグを示すため、特に捕らえてはいけません。 – Evk

+0

例外を具体的に処理し、問題に対処するために何かを行うことができる場合にのみ、例外をキャッチする必要があります。コード内のバグを示す例外をキャッチせず、何もできない例外をキャッチしないでください。 'NullReferenceException'と' OutOfMemoryException'は、あなたがおそらくそれらを扱うことができないので、あなたが捕まえてはならない2つの例外です。また、ジェネリックな 'Exception'も捕まえるべきではありません。 *特定の*例外タイプを常にキャッチします。一般に、ドキュメンテーションは、どの関数が例外をスローし、どのような条件の下でその例外がスローされるかを示します。 –

答えて

4

リストが空の場合は、NullReferenceExceptionはありません。あなたは空のコンテナをちょうどきれいに反復することができます。

コンテナ自体がnullである可能性がある場合は、ループする前に単純なifでこれを確認する必要があります。しかし、最初にnullにならないようにすることは良い習慣かもしれません。コンボがnullではなく、がであることを期待する代わりに、を投げた場合は、早めに失敗してnullとなります。

関連する問題