日期:2014-05-18  浏览次数:20432 次

|M| 将才做的错误处理有一个天大的错误
protected   void   Application_Error(Object   sender,   EventArgs   e)
{
        //   在出现未处理的错误时运行的代码
        Exception   error   =   HttpContext.Current.Server.GetLastError();
        String   Path   =   Request.Url.ToString();        
        Response.Redirect(String.Format( "/web/error/404page.aspx?Path={0}&Error={1}&Detail={2} ",   Path,   Server.UrlEncode(error.Message),Server.UrlEncode(error.ToString())));
}

页面
protected   void   Page_Load(object   sender,   EventArgs   e)
{      
        throw   new   Exception( "出错 ");                
}
这个时候上面就没有做用了
我的理解是
Response.Redirect
这里因为   在这个网页load的时候出错他也没有办法执行这条语句

------解决方案--------------------
throw new Exception( "出错 "); ====== 这样写会死循环的.
------解决方案--------------------
所以在404page.aspx中要catch错误,即Onerror中Clear掉.
------解决方案--------------------
怎么不搞个Exception的类来记录一下呢?丢一个实体传过克就可以了
------解决方案--------------------
怎么个错误??

------解决方案--------------------
可以捕捉实现的的~~~给页面写个Page_Error事件,在将错误参数等方式递交到你的错误页面,自己可以调一下.

protected void Page_Error(object sender, EventArgs e)
{
Exception error = HttpContext.Current.Server.GetLastError();
.
.捕捉错误...
.
Response.Redirect( "error.aspx?Path=...... "+ "错误信息等 ");
}
------解决方案--------------------
错误 信息 对于 客户是 严重多于 和 不友好的.

应该使用 异常处理类 在遇到异常的 时候进行文件日志记录.
------解决方案--------------------
有两个在异常未处理时将被ASP.NET调用的事件:

Page_Error event,它提供捕获在Page级别发生错误的方法

Application_Error event,它提供捕获在代码中的任何地方发生错误的方法。该事件的范围是整个应用程序,这使它成为添加日志代码的一个理想地方。

这两个事件的执行顺序是——先执行Page_Error,后执行Application_Error。如果希望在Page_Error中处理过的错误就不要再在Application_Error中处理,我们可以在Page_Error中处理错误之后,使用Server.ClearError方法清除最后一个错误,避免再调用Application_Error

------解决方案--------------------
使用自定义的异常处理类,写入日志
------解决方案--------------------
Response.Redirect可以
/web/error/404page.aspx ??
根目录下的??

------解决方案--------------------
/web/error/404page.aspx
网站根目录下游览这个网页看可不可以

------解决方案--------------------
web/Default.aspx
而不是
/web/error/404page.aspx
========
Response.Redirect(String.Format( "/web/error/404p
这里

------解决方案--------------------
test.aspx:
protected void Page_Load(object sender, EventArgs e)
{
throw new Exception( "cccccc ");
}

Global.asax:
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
Exception ex= Server.GetLastError();
Response.Redirect( "error.aspx?test= "+ex.Message);