我的目的是在捕获异常时记录错误(我正在使用Log4Net)并重定向到看起来很漂亮的页面并显示一些错误消息。我有一个类返回一个Type T对象,主要是一个DataSet。
在我写的Catch声明中,它有效,但我不确定是否有更合适的处理方式,有人可以请一些建议。谢谢。请注意,不能省略throw,因为该类具有返回类型。:
catch (Exception ex)
{
log.Error(ex);
HttpContext.Current.Response.Redirect("~/errorPage.aspx");
throw ex;
}
答案 0 :(得分:2)
这取决于你想如何处理页面上的错误。一般来说,未处理的异常应该冒充到gloabl.asax文件中的application_error到它的generic.Here是一种处理这个错误的简单方法。
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
// Get the exception object.
Exception exc = Server.GetLastError();
// Handle HTTP errors
if (exc.GetType() == typeof(HttpException))
{
// The Complete Error Handling Example generates
// some errors using URLs with "NoCatch" in them;
// ignore these here to simulate what would happen
// if a global.asax handler were not implemented.
if (exc.Message.Contains("NoCatch") || exc.Message.Contains("maxUrlLength"))
return;
//Redirect HTTP errors to HttpError page
Server.Transfer("HttpErrorPage.aspx");
}
// For other kinds of errors give the user some information
// but stay on the default page
Response.Write("<h2>Global Page Error</h2>\n");
Response.Write(
"<p>" + exc.Message + "</p>\n");
Response.Write("Return to the <a href='Default.aspx'>" +
"Default Page</a>\n");
// Log the exception and notify system operators
ExceptionUtility.LogException(exc, "DefaultPage");
ExceptionUtility.NotifySystemOps(exc);
// Clear the error from the server
Server.ClearError();
}