2 weixin 39565597 weixin_39565597 于 2017.09.07 12:20 提问

简单登录用户检测,为何会提示空指针异常?

service类

//查询帐号结果做判断逻辑,u对象已存有表单参数
public void findUser(User u){
    //1 根据登陆名称查询登陆用户,dao类udsave方法查询该帐号已经可以返回所有信息
    User existUser = udsave.getByUserName(u.getUserName());
    //2 判断用户是否存在.不存在=>提示用户名不存在
    if(existUser==null){
        System.out.println("用户名不存在!");
    }
    //3 判断用户密码是否正确=>不正确=>提示密码错误
    if(!existUser.getUser_password().equals(u.getUser_password())){
        System.out.println("密码错误!");
    }
}

功能实现都没有问题,输入正确帐号和错误密码会显示密码错误
但是输入错误帐号,existUser为null,控制台会打印“用户名不存在”还有空指针异常??
这个空指针异常是怎么来的呢?。。好奇怪啊

5个回答

qq_33727653
qq_33727653   2017.09.07 13:31
已采纳

因为打印了“用户名不存在”之后,程序会继续向下进行,下面的existUser.getUser_password() 这个东西就错了,报空指针了!!!

楼主要么在楼主的第二步判断用户是否存在的if里加return,要么把第三步的if 改成 else if 或者直接放else里,当然有其他方式!!

q54244125
q54244125   2017.09.07 12:23

existUser都已经为null了,判断为空的话,直接return跳出方法了,继续往下走就报空指针了

qq_34926773
qq_34926773   2017.09.07 13:35

你传入错误账号,肯定查不到数据啊。existUser就为null了
下面existUser.getUser_password()
这里对象都为空了,获取其中属性肯定报空指针了

usecf
usecf   2017.09.07 13:45

对象都为空,获取其中属性肯定报空指针了

weixin_39624521
weixin_39624521   2017.09.08 17:06

空指针异常肯定是打点之前即existUser.getUser_password()的那个点,你的existUser都为空了,打点肯定报空指针异常

Csdn user default icon
上传中...
上传图片
插入图片