2011-07-08 11 views
2

参照の前にヌルをチェックするか、例外を介してヌル参照をキャッチするだけですか?プロとコンス?逆参照の前にヌルをチェックするか、例外を介してヌル参照をキャッチする

2番目のオプションでは、クリーンで、時にはより良いコードを実行します。 1番目のオプションでは、望むノンストップフローを提供する可能性があります。

+0

ここではどのような言語を使用していますか? –

+0

私は現在、C#でコーディングしていて、適切な例外処理があれば、多くの(if-else)コードをクリーンアップすることができます。 – tom

答えて

2

私はそれが状況に完全に依存していると思います。例外がスローされるのは間違いありません。例外です。一方

、あなたはnull値は(根本的なエラーがされずに)与えられた時点で現れることができることを期待していた場合、その後確認のためには、オブジェクトをdeferencing /使用する前にnullを確認する必要があります。

ここでもまた、ここで絶対的な正誤があるとは思わない - それは状況によって異なる。


記事C++ Exceptions: Pros and Consは、例外を除いて賛否両論に入ります。そのC + +のための私は、ロジックは、プログラミング言語の味の他の多くの他のに転送することができると仮定します。彼らは結論がで始まる: "例外またはエラーコード"の質問に簡単な答えはありません。決定は、開発チームが直面している特定の状況に基づいて行われる必要があります。 」

1

nullをチェックしてください。システムの例外処理システムによっては、システムが混乱し、問題が発生する可能性のあるリソース割り当ての必要があります(まれですが、可能です)。

1

システムの境界でヌルをチェックし、適切に処理します。ソフトウェア内で、何かがヌルになる可能性があることとその意味を知っているので、不要なチェックや例外が発生することはありません。サードパーティのコードから返されたnullやパブリックAPIの呼び出し元から渡されたnullなど、他のコンポーネントとインターフェイスする場所でコードをテストします。

IMOの場合、ほとんどの場合、NullPointerException/NullReferenceException(またはあなたの言語がそれを呼び出すもの)を捕まえる必要はありません。サードパーティのライブラリはnullを返した場合、処理するための最良の方法は、それはあなたが後でユーザーまでログインまたはバブルできる明確なメッセージ、例えばで、独自の例外をスローすることは通常である:

if(returnedValue == null) 
{ 
    throw new MyDescriptivelyNamedException("libcrappy returned null again!"); 
} 

の場合あなたのコンポーネントのコンシューマがヌル引数を渡した場合、ArugmentNullExceptionIllegalArgumentException、またはあなたの言語/アプリケーションに適したものを投げてください。

関連する問題