2017-01-11 7 views
0
public boolean createPricebreakupOrder(int x, int y) { 
    boolean returnFlag = false; 

    try { 
     if (x == y) { 
      returnFlag = true; 
     } 
    } catch (final Exception e) { 
     LOG.debug("Exception while Price Breakup Create" + e.getMessage()); 

     returnFlag = false; 
    } 

    return returnFlag; 
} 

今、私はこのメソッドを2つの異なるクラスから呼び出しています。各クラスから同じパラメータを渡します。ファーストクラスの場合、メソッドは実行されており、returnFlag = trueです。他の人にとっては、同じパラメータであっても、falseに戻ります。2つの異なるクラスから同じメソッドを呼び出す

+2

これは簡単な例ですか?あなたがそこに例外を受け取ったかどうかを確認しましたか?これは 'false'リターンを説明するためです。 – SomeJavaGuy

+1

このメソッドを呼び出す場所にコードの部分を投稿してください。 –

+0

最初にtrueを返すかfalseを返すことができます。変数の使用を避けてください。次に、デバッガを使用します:ブレークポイントを先頭に置き、フローを1行ずつ続けます。 – Belun

答えて

3

は、この機能に関する非決定論は何もありませんtryブロック内のコードは、これまで例外をスローしませんので、あなたの関数が

public boolean createPricebreakupOrder(int x, int y) 
{ 
    return x == y; 
} 

と同等であることが保証されます。同じ入力パラメータが得られます同じ結果。

xyが実際にIntegerタイプだった場合、それは==が原因おそらく、NPEがスローされた基準の比較や、に失敗している可能性があります時に自動アンボクシングnullInteger関数が呼び出されたときintします。

関連する問題