我想检查网页中是否存在会话,但是如果会话不存在,编译器会收到NullPointerException
。如何检查会话以便它不会产生此异常?
考虑,会话不存在
try
{
HttpSession currentsession=request.getSession(false);
if(currentsession==null) || currentsession.getAttribute("current-emailID").equals(null))
{
//Code to redirect to default page
}
}
catch(NullPointerException npe)
{
//Code to redirect to default page
}
答案 0 :(得分:0)
以下是您的代码的问题:
NullPointerException
可能会引发request == null
,但这种情况不太可能。 currentSession.getAttribute
检查空值,请使用==
。 不调用方法equals
,因为您的属性可能是null
,因此您可以通过在NPE
上调用equals
来引发null
RuntimeException
对象。NullPointerException
是不好的做法 - 特别是try
。您应该删除此实例中的catch
/ {{1}}块。答案 1 :(得分:0)
当currentsession
为空时,currentsession.getAttribute("current-emailID")
会抛出NullPointerException
,
当currentsession
不为空时,currentsession.getAttribute("current-emailID")
为空或不为空,在任何一种情况下,您应该使用== null
而不是.equals(null)
所以你所有的测试都应该是(currentsession!=null) && (currentsession.getAttribute("current-emailID")!=null)
通过这种方式当currentsession为null时,可以防止执行第二个条件,然后抛出异常。