Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL查询没有结果后处理Nullpointerexception_Java_Nullpointerexception - Fatal编程技术网

Java SQL查询没有结果后处理Nullpointerexception

Java SQL查询没有结果后处理Nullpointerexception,java,nullpointerexception,Java,Nullpointerexception,我有一个基于MVC的Java应用程序,它有三种模型:Room、Student和StudentRoom StudentRoom包含Room和Student的对象 现在我遇到了一个问题,如果我的SQL查询没有返回结果,我会像这样检查学生姓名的值 if(studentRoom.student.name != null) { } 我将得到一个NullPointerException,我不知道如何处理它 我应该设置Student.name=“”因为我的查询没有结果 if(studentRoom != n

我有一个基于MVC的Java应用程序,它有三种模型:
Room
Student
StudentRoom

StudentRoom
包含
Room
Student
的对象

现在我遇到了一个问题,如果我的SQL查询没有返回结果,我会像这样检查学生姓名的值

if(studentRoom.student.name != null) {
}
我将得到一个
NullPointerException
,我不知道如何处理它

我应该设置
Student.name=“”因为我的查询没有结果

if(studentRoom != null && studentRoom.student != null && studentRoom.student.name != null){
  //.. Access student
}
上面的解决方案看起来有点奇怪。最好使用
getter/setter
方法,而不是直接访问对象

除此之外,您还可以在
studentRoom
中定义类似
isStudentAvailable()
的方法来检查其中是否包含
Student

我应该设置Student.name=“”;既然我的查询没有结果


这完全取决于您的用例。但是我必须说,最好保持它
null
,因为它将引发异常,而不是通过
null
检查验证。

您可能需要一个try/catch语句。大概是这样的:

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

但是请注意,如果try语句中有任何对象,仍然会抛出
NullPointerException
。希望这能有所帮助。

如果SQL查询没有结果,您不应该首先尝试获取学生姓名。您应该尝试防止NPE发生,例如,初始化用于将结果存储到空集合的数据结构,NullPointerException通常是编程错误的标志,不应被捕获。相反,您应该尝试修复导致NPE的根本原因