检查登录用户时出现NullPointerException

时间:2013-07-26 19:11:28

标签: java

我试图通过检查会话中是否存储了值来检查用户是否已登录:

String userId = null;
if(session.getAttribute("user_id")!=null){
    userId=(String)session.getAttribute("user_id");
}

if(userId!=null||!userId.isEmpty()){
    //do something
}

但是我在这一行收到NullPointerException:if(userId!=null||!userId.isEmpty())当用户没有登录时。

3 个答案:

答案 0 :(得分:3)

你的逻辑错误;你需要&&(逻辑 - 和)而不是||(逻辑 - 或)来正确地缩短你的状况。

if(userId!=null && !userId.isEmpty()){

这样,userId.isEmpty()将不会执行 - 如果NullPointerException为空,则不会抛出userId

答案 1 :(得分:3)

您需要使用&&

if (userId!=null && !userId.isEmpty()) {

如果您使用||,那么无论如何,Java都将评估这两个条件,而不管任一表达式的真值。因此,如果您使用||,那么即使userId为空,Java也会继续尝试评估!userId.isEmpty(),这会为您提供NullPointerException

通过使用&&,如果第一个条件为false,则Java知道表达式已经为假,并且没有任何意义继续进行。因此,在这种情况下,如果userId为null,则userId!=null为false,并且Java会跳过if语句的主体。

答案 2 :(得分:0)

试试这个

    if( session.isOpened())
    {
      if(user!=null)
       {
         //do here whatever
       }
    }
相关问题