我有一个包含许多事件处理程序的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
答案 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);
}