0

我得到了什么:

  • 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()并且不捕获异常。所以这个功能更有可能是允许开发人员发送一封关于未处理异常的电子邮件。我将其称为“全局未处理异常处理程序”而不是“全局异常处理程序”。

有什么我可以尝试捕获的构造函数异常抛出吗?

4

1 回答 1

0

由于所有需要登录的页面都将从SecureBasePage该类继承,因此在那里实现您的逻辑可能最有意义。只需覆盖其中一种页面方法,例如OnLoadOnPreLoad来处理重定向。

我不建议依赖global.asax处理错误,所以你的基类可能是最合适的地方。

编辑

作为一般经验法则,您不应该使用异常来控制逻辑流。除非异常本身包含有用的日志信息,否则它的成本可能大于收益,尤其是对于几乎每个请求都会使用的逻辑。

本文就该主题提供了一些有用的建议:

于 2012-05-01T14:09:10.520 回答