User.Identity.Name是否抛出



我注意到,当没有经过身份验证的用户时,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是字符串,IdentityUser是对象,但它肯定可以像任何对象一样为null。因此,总是有机会抛出异常,作为生产应用程序,您最好通过try/catch包装它,并检查Name是否为null

Name是一个属性,而不是一个方法,因此它的"getter"部分极不可能抛出异常,因为它是一个Microsoft类,他们的框架设计指南明确警告不要从getter抛出异常。虽然这个规则可能有一个例外。。。

此外,我通常使用元数据来指导方法(对于.Net框架类)抛出什么异常。在VisualStudio中点击F12(如果您还没有安装Reflector或类似的东西)将显示元数据。在方法上方的注释块中,它通常会为您提供该方法可能引发的确切异常类型。

相关内容