我得到了什么:
SecureBasePage.vb
(由需要登录的网页继承)Default.aspx
继承了SecureBasePage
应该是什么情况:客户请求Default.aspx
但由于他未登录而被重定向到登录。
SecureBasePage.vb
有这个构造函数
Public Sub ()
If userIsAuthenticated Then
Else
Throw New LoginException()
End If
End Sub
这导致异常LoginException
。现在我想让它被某个全局异常处理程序捕获,它将客户端踢到login.aspx
。
我知道Application_Error()
中有一个函数Global.asax
,但在我看来,这不是一个异常处理程序,因为它只需要Server.GetLastError()
并且不会捕获异常。因此,此功能更有可能允许开发人员发送有关未处理异常的电子邮件。我将其称为“全局未处理的异常处理程序”,而不是“全局异常处理程序”。
有什么我可以尝试捕捉构造函数异常抛出吗?
答案 0 :(得分:0)
由于所有需要登录的页面都将继承自SecureBasePage
类,因此在那里实现逻辑可能最有意义。只需覆盖其中一个页面方法,如OnLoad
或OnPreLoad
即可处理重定向。
我不建议根据global.asax
来处理错误,所以你的基类可能是最合适的地方。
修改强>
作为一般经验法则,您不应使用异常来控制逻辑流程。除非异常本身包含有用的日志信息,否则它可能比有益的更昂贵,特别是对于几乎每个请求都要使用的逻辑。
本文就该主题提供了一些有用的建议: