我注意到,当没有经过身份验证的用户时,User.Identity.Name
会返回空字符串,而不是抛出null引用异常。
假设User.Identity.Name
永远不会抛出?或者我应该在访问之前检查空Identity
。
我相信,如果您没有调用,User对象可能为null
FormsAuthentication.SetAuthCookie(UserName, False)
或
FormsAuthentication.RedirectFromLoginPage(UserName, False)
最好是尝试接球。
HttpContext
中没有User
,则User.Identity
将抛出空引用异常。虽然是User
为空,而不是Identity
。因此,是的,您应该以某种方式检查或处理null。
虽然Name
是字符串,Identity
和User
是对象,但它肯定可以像任何对象一样为null。因此,总是有机会抛出异常,作为生产应用程序,您最好通过try/catch包装它,并检查Name是否为null。
Name
是一个属性,而不是一个方法,因此它的"getter"部分极不可能抛出异常,因为它是一个Microsoft类,他们的框架设计指南明确警告不要从getter抛出异常。虽然这个规则可能有一个例外。。。
此外,我通常使用元数据来指导方法(对于.Net框架类)抛出什么异常。在VisualStudio中点击F12(如果您还没有安装Reflector或类似的东西)将显示元数据。在方法上方的注释块中,它通常会为您提供该方法可能引发的确切异常类型。