用于在asp.net中加载页面的全局try-catch(在本例中为vb)

时间:2012-05-01 13:47:51

标签: asp.net vb.net exception-handling

我得到了什么:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

修改

作为一般经验法则,您不应使用异常来控制逻辑流程。除非异常本身包含有用的日志信息,否则它可能比有益的更昂贵,特别是对于几乎每个请求都要使用的逻辑。

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