|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);