Grisson's .net

源码之前,了无秘密

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

异常处理技术

在web应用程序中可以使用两种不同的方法来处理异常:

  • 使用异常处理块在过程范围内处理异常。(vs.net文档中成为结构化异常处理)
  • 使用出错事件在对象范围内处理异常

查看.net framework提供的异常处理类型:

在Debug菜单中,选择Exceptions。在显示的对话框中列出了所有framework提供的异常

定义新异常:

  ApplicationException 类提供了与标准Exception类相同的功能。他提供了一种方式来区分framework中定义的异常和自己定义的异常

  1.throw new ApplicationException("User is already logged on");

  2.public class UserLoggedOnException : System.ApplicationException

    {

       public UserLoggedOnException() : this("The user is already logged on to the server",null)

       {

       }

 

      public UserLoggedOnException(string message) : this(string message) : this(message,null)

      {

      }

 

      public UserLoggedOnException(string message,Exception inner) : base(message,null)

      {

       }

    }

 

使用出错事件

使用server对象来获取异常相关信息

Server对象的异常处理事件
GetLastError() 获取在服务器上发生的最后一个异常
ClearError() 清楚在服务器上发生的最后一个异常

在出错事件中处理异常的步骤:

  1. 在Page_Error,Global_Error或Application_Error事件过程中,使用GetLastError方法获取发生的异常。
  2. 对该异常进行处理,例如向用户显示信息,采取步骤纠正问题,或写入到出错日志中
  3. 使用ClearError方法清楚异常
  4. 重新显示一个页面

e.g.

private void Page_Error(object sender,System.EventArgs e)

{

  Exception ex = Server.GetLastError();

  Session["Error"] = ex.Message;

  Server.ClearError();

  Response.Redirect("ErrorEvent.aspx");

}

 

 

使用错误页面

应用程序级的错误页面

  • 可以在IIS中设置
  • 还可以在web.config中配置出来

e.g.

<customErrors mode="On" defaultRedirect="ErrorDefault.aspx">

     <error statusCode="401" redirect="ErrorUnauthorized.aspx" />

     <error statusCode="404" redirect="ErrPageNotFound.aspx" />

     <error statusCode="500" redirect="ErrServer.htm" />

</customErrors>

 

页面级应用程序错误

e.g.

<%@ Page Language="c#" Codebehind="ErrorPage.aspx.cs" AutoEventWireup="flase" Inherites="csErrorPageSnippt.WebForm1" errorPage="ErrorDefault.aspx">

 

//ErrorDefault.aspx

private void Page_Load(object sender,System.EventArgs e)

{

  lb_Error.Text=Server.GetLastError().Message;

  Server.ClearError();

}


文章来源:http://spaces.msn.com/members/Grisson/Blog/cns!1pdzVqmOhs8O_w1Y7GbtnyFQ!212.entry
posted on 2005-08-12 10:53  海盗  阅读(323)  评论(0编辑  收藏  举报