【发布时间】:2016-03-30 20:19:22
【问题描述】:
我有以下代码行:
HttpContext.Current.Session[Constants.SESSION_USER] = user;
这是导致异常的原因,我认为是因为会话为空。
如果我删除此行,则不会引发异常。
我能够从 user 对象中检索 ID,因此我认为这不是导致问题的原因。
从这个问题:
How to know if a session has been set
我尝试了以下方法:
if (HttpContext.Current.Session[Constants.SESSION_USER] == null)
throw new Exception("SESSIONULL");
else
throw new Exception("SESSIONOTNULL");
但是这些异常都没有被抛出——我假设是因为它试图访问一个空对象,所以在它执行我的代码之前就抛出了。
如果是这样,我如何判断会话是否为空,我知道我可以使用 try catch 块,因为这会停止错误,但我希望以更精确的方式解决这个问题。
有什么想法吗?
编辑:这不是上面问题的重复,因为上面的问题试图从会话中访问一个变量,我需要检查实际会话是否为空。请在下面查看我的答案。
【问题讨论】:
-
@QuentinRoger 你能看到我对你重复评论的回复吗,如果你同意请删除重复的标签
-
@Alex 我认为这个问题已经有了答案here
-
@ardila 你能解释一下是怎么回事吗?我的问题的答案与要检查空值的变量的级别有关,如果我将答案应用于您链接到的问题,使用原始问题中的变量,我会一直收到空异常。我说的是对的,还是我遗漏了什么?
-
@Alex 知道应该针对 null 检查哪个对象并不是一个好问题,因为每个程序都不存在规范的答案。因此,知道如何检查 null 是 的规范答案。顺便说一句,您的标题应该是“检查会话是否为空”。 What should I do if the current ASP.NET session is null? 也很有趣,其中包括如何检查空
Session对象。