页面范围默认异常处理程序

时间:2013-04-10 18:51:47

标签: asp.net exception-handling

我有一个包含许多事件处理程序的ASP.NET页面,如下所示:

Private Sub btnNextEvent_Click(sender As Object, e As EventArgs) Handles btnNextEvent.Click
    Try
        NextRegistration()            
    Catch ex As Exception
        lblError.Text = ex.Message
    End Try
End Sub

在很多(可能是十几个)地方重复那个微小的尝试 - 除外块。

有没有办法定义页面范围的“默认”异常处理程序,所以我可以这样说?

Private Overrides Sub DefaultHanderIWishIHad(ex As Exception)
    lblError.Text = ex.Message
End Sub

Private Sub btnNextEvent_Click(sender As Object, e As EventArgs) Handles btnNextEvent.Click
    'no need to handle here, because the default handler is just fine...
    NextRegistration()            
End Sub

3 个答案:

答案 0 :(得分:0)

在页面上

private void Page_Error(object sender, EventArgs e)
{ /* ... */ }

应用程序:Global.asax

void Application_Error(object sender, EventArgs e)
{ /* ... */ }

答案 1 :(得分:0)

即使你可以使用ELMAH http://code.google.com/p/elmah/。哪个好,易于配置和处理所有未处理的异常

答案 2 :(得分:0)

实际上,如果你得到一个异常但没有处理,那么你就失去了控制权 - 从那里你只能重定向并记录错误。

因此我不建议捕获全局错误。现在在页面上有一个函数,在异常OnError上调用,但我只建议关闭任何打开的处理程序,而不是处理任何错误,因为正如我所说,当你在那里时,你输了控制你的页面。

protected override void OnError(EventArgs e)
{
   base.OnError(e);
}

relative:How do I make a "generic error" page in my ASP.NET application so that it handles errors triggered when serving that page itself?