要创建一个错误处理的代码ErrHandler.cs
- /// Handles error by accepting the error message
- /// Displays the page on which the error occured
- public static void WriteError(string errorMessage)
- {
- try
- {
- string path = "~/Error/" + DateTime.Today.ToString("dd-mm-yy") + ".txt";
- if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))
- {
- File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();
- }
- using (StreamWriter w = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path)))
- {
- w.WriteLine("\r\nLog Entry : ");
- w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
- string err = "Error in: " + System.Web.HttpContext.Current.Request.Url.ToString() +
- ". Error Message:" + errorMessage;
- w.WriteLine(err);
- w.WriteLine("__________________________");
- w.Flush();
- w.Close();
- }
- }
- catch (Exception ex)
- {
- WriteError(ex.Message);
- }
- }
这就是我们的ErrHandler类了.然后我们来看看如何使用这个类和在Page级中(Application级中)处理错误。
在Page级中处理错误
在Default.aspx中,从工具箱中添加一个button控件.将这个button命名为 btnError 并设置值为 "Throw Handled Exception".我们将抛出一个异常.
按钮点击操作代码如下:
- protected void btnHandled_Click(object sender, EventArgs e)
- {
- try
- {
- throw new Exception("Sample Exception");
- }
- catch (Exception ex)
- {
- // Log the error to a text file in the Error folder
- ErrHandler.WriteError(ex.Message);
- }
- }
注意:要在根目录建立Error文件夹
Redirecting users on unhandled errors(在未有处理错误情况下重定向用户)
如何在Application级上来捕捉未有错误处理而发生的错误,并将用户定向到一个不同的页面。
根目录添加一个 Global.asax 文件
- void Application_Error(object sender, EventArgs e)
- {
- // Code that runs when an unhandled error occurs
- Exception objErr = Server.GetLastError().GetBaseException();
- string err = "Error in: " + Request.Url.ToString() +
- ". Error Message:" + objErr.Message.ToString();
- // Log the error
- ErrHandler.WriteError(err);
- }
打开你的 Web.config 文件,并定位到
标签处,取消注释改成下面代码:
- <customErrors mode="On" defaultRedirect="ErrorPage.aspx">
- <error statusCode="403" redirect="NoAccess.htm" />
- <error statusCode="404" redirect="FileNotFound.htm" />
- </customErrors>
新建ErrorPage.aspx文件
为了测试这个功能,我们回到 Default.aspx, 添加新的按钮并命名为 btnUnhandled 并将文本属性设置为 Throw
Unhandled Exception.我们将使用"Divide By Zero"异常.并不去处理它.我们可以发现少了 catch
块.所以当错误发生时,用户就会按照我们在web.confg文件中设置的重定向到 "ErrorPage.aspx".
- protected void btnHandled_Click(object sender, EventArgs e)
- {
- int i = 9;
- int j = 0;
- Respone.Write( i / j );
- }
英文版:http://www.dotnetcurry.com/ShowArticle.aspx?ID=94&AspxAutoDetectCookieSupport=1
阅读(434) | 评论(0) | 转发(0) |