2012-04-25 13 views
2

私はCの世界から来て、そこに我々は異なる戻り値を定義するには、「定義」を使用し、値がそうのように、C関数から返された:これは、Java、正しい方法で行われている方法Java APIの適切な戻り値は?

#define RETURN_SUCCESS 0 
#define RETURN_ERROR -1 

int myFunc() 
{ 
    if(...) return(RETURN_SUCCESS); 
    else if(...) return(RETURN_ERROR);    
} 

は、私が持っていると仮定します。

public MyObject findMyObject() 
{ 
    MyObject tempObject = search(); 

    if(tempObject.type == myType) 
    { 
     return tempObject; 
    } 
    else 
    { 
     return null; 
    } 
} 

はそれがnullを返すために、OKですか?

もっと適切な方法がありますか?

答えて

5

nullを返すのは問題ありません。あなたはJava APIそれに気づくでしょうreturns null sometimesor -1 where an Int is expected。何かがうまくいかない場合は、しばしばthrow an exceptionに単に使用される別のオプションがあります。

ほとんどの人と私が今質問しているような疑問は、「まあ、いつ例外を投げるのですか?そしていつnullを返すのですか?その質問はかなりうまく答えられる。here

4

Javaでエラーを示すためにリターンコードを使用することは、パターンに反します。代わりに例外を使用する必要があります。

プログラミングエラー(無効なパラメータ、不正な状態)によるエラーの場合は、チェックされていない例外のインスタンスをスローします。

環境に何か問題が生じた(サーバーに接続できず、必要なファイルが見つからない)ためにエラーが発生した場合は、チェック例外をスローします。

1

定義した仕様を尊重したものを返すことは、いつでもOKです。したがって、ドキュメンテーション(javadocとテスト)でnullが返される状況を定義した場合、それ以上の苦労なしに返すことができます。

また、Cコードのようなエラーコードに人格を持つことは、Javaの最良の方法ではないことも理解しておく必要があります。一部の人はそれが反パターンであると考えるかもしれない。例外を使用する方が一般的です。 Javaを初めて使い慣れている場合は、http://docs.oracle.com/javase/tutorial/essential/exceptions/のチュートリアルを読むことを検討してください。

関連する問題