2016-04-19 23 views
2

私はMVCベースのJavaアプリケーションを持っています。RoomStudentStudentRoomです。SQLクエリに結果がない場合のハンドルNullpointerexception

StudentRoomは、RoomStudentのオブジェクトを含んでいます。

今、私は私のSQLクエリが結果を返さないと、私はこの

if(studentRoom.student.name != null) { 
} 

のように生徒の名前の値をチェックすると、私はNullPointerExceptionを得るでしょうし、私はどのように知っていないという問題を持っています扱う。

クエリに結果がないので、Student.name = "";を設定する必要がありますか?

+0

SQLクエリに結果がない場合は、最初に生徒の名前を取得しようとするべきではありません。 – EJP

+0

NPEが起こらないようにする必要があります。空でないコレクションに結果を格納するために使用されるデータ構造を初期化します。 – Micho

答えて

3
if(studentRoom != null && studentRoom.student != null && studentRoom.student.name != null){ 
    //.. Access student 
} 

上記の解決策はちょっと変わったようです。直接オブジェクトにアクセスするのではなく、getter/setterメソッドを使用する方がよいでしょう。

のようににメソッドを定義して、Studentがあるかどうかを確認することができます。

私はStudent.name = ""を設定する必要があります。私のクエリは結果がないので?

完全にあなたの使用状況によって異なります。しかし、nullを保つ方が良いと言わなければなりません。なぜなら、nullのチェック検証を渡すのではなく例外が発生するからです。

0

try/catchステートメントが必要な場合があります。このような何か:

try { 
    // do process here 
} catch (NullPointerException npe) { 
    //to do if student is null 
} 

しかし、try文の中にある任意のオブジェクトが存在する場合、NullPointerExceptionはまだスローされます、注意してください。お役に立てれば。

+0

NullPointerExceptionは、通常、プログラミングエラーの兆候であり、キャッチされるべきではありません。代わりに、NPE – Micho

+0

ああ原因となる根本原因を修正しようとする必要があります。ありがとうございました。 – JanLeeYu

関連する問題