【问题标题】:handling errors outside of exceptions处理异常之外的错误
【发布时间】:2014-01-20 14:38:03
【问题描述】:
我设置了一个异常处理类来将错误记录到数据库中,它工作得非常好,但我想知道我是否也可以以某种方式设置应用程序,以便 try catch 之外的任何错误都会以某种方式调用相同的过程?
它在大多数情况下运行良好,并向用户显示一个带有错误代码的屏幕,但我希望每次都能使用这个友好的错误屏幕,但偶尔会抛出 try catch 之外的错误,并且它显示了正常的 asp.net 错误。
我使用的渔获物:
catch (SqlException ex)
{
ExceptionHandling.SQLException(ex, constPageID, constIsSiteSpecific);
}
【问题讨论】:
标签:
c#
asp.net
sql
exception
【解决方案1】:
可以使用 Global.asax 的Application_Error 方法。
protected void Application_Error()
{
Exception exception = Server.GetLastError();//Get the Last Error
LogException(exception);//Custom Code
}
但是请注意,如果您犯了任何错误,用户将被引导至您的error page。处理页面本身的较小错误并显示简单消息通常会更好。
关于正确的错误处理有无数的讨论——我个人喜欢捕捉所有调用它的 UI 方法(OnPreRender、OnLoad OnEvent 等)。
【解决方案2】:
如果您正在开发 ASP.NET 应用程序,您可以在 Global.asax 中的“Application_Error”方法中记录未处理的异常。
protected void Application_Error()
{
Exception exception = Server.GetLastError();
// Clear the error
Server.ClearError();
// Log exception
}