2013-04-10 59 views
0

我有很多的事件处理程序看起来像这样的一个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 

那个小try-except块在很多重复(大约一打)的地方。

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

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 
+0

你真的想要把异常消息转换为标签?你在用什么?故障排除?如果没有完整的例外追踪,那将不那么容易。尝试将'ex.ToString()'放入标签中。 – 2013-04-10 18:53:30

+0

为便于讨论,此示例被简化。对于调试,我只是把错误放在标签中。 – JosephStyons 2013-04-10 18:56:43

+0

我建议,对于调试或其他任何事情,请使用[ASP.NET Health Monitoring](http://msdn.microsoft.com/zh-cn/library/bb398933.aspx),然后只删除那些try/catch块。 – 2013-04-10 18:58:25

回答

0

在一个页面

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

应用:Global.asax中

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

实际上,如果您得到一个异常,而不是处理的地方,那么你失去了控制 - 从那里你只能重定向和记录错误。

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

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

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