Asp.net下常见的Exception异常使用

 

1  作者:Mr.Ewin
2  环境:Vs2008  Windows XP
3  申明:转载请保留链接
4  更新:暂无

     对.NET类库来说,异常类 System.Exception 派生于 System.Object。还有许多定义好的异常类共分两大类(System.SystemException与System.ApplicationException),他们又派生于 System.Exception 类。其中System.ApplicationException 类是第三方定义的异常类,如果我们要自定义异常类,那么就应派生于它。

1  异常类公共属性:
2  Data           获取一个提供用户定义的其他异常信息的键 / 值对的集合。
3  HelpLink       获取或设置指向此异常所关联帮助文件的链接。
4  InnerException 获取导致当前异常的 Exception 实例。
5  Message        获取描述当前异常的消息。
6  Source         获取或设置导致错误的应用程序或对象的名称。
7  StackTrace     获取当前异常发生时调用堆栈上的帧的字符串表示形式。
8  TargetSite     获取引发当前异常的方法。

 

一、ASP.NET为我们提供了几种异常处理机制呢?
二、它们之间是否存在一定的优先级呢?
三、记录这些异常信息的方式有几种呢?

 

一、ASP.NET为我们提供了几种异常处理机制呢?
1、方法级别异常处理
Try:用于检查发生的异常,并帮助发送任何可能的异常。
Catch:以控制权更大的方式处理错误,可以有多个catch子句。
Finally:无论是否引发了异常,finally的代码块都将被执行。
Throw:用于引发异常,可引发预定义异常和自定义异常。
它们分别完成了异常的监测 > 捕获 > 处理工作。

 

 1  try  
 2  {
 3     var str  =   " abc " ;
 4      int  i  =  Convert.ToInt32(str);
 5  }
 6  catch (Exception ex) 
 7  {
 8     Response.Write(ex); // 输出异常而不引发
 9      //  throw;  // 引发异常(注意不要throw e 重新引发新的异常,会导致堆栈信息为新异常的)           
10  }
11  finally  
12  {
13     Response.Write( " 总是执行的数据 " ); // 例如当异常引发后,强行关闭打开的数据库等。
14  }

2、页面级别异常处理

1  protected   override   void  OnError(EventArgs e)
2  {
3  Exception ex  =  Page.Server.GetLastError(); // 取到异常信息
4  Response.Write(ex); // 输出异常,或其它方式记录下异常以便排除。
5  Page.Server.ClearError(); // 清除异常,以免引发二次异常抛出。
6  Page.Response.Redirect( " /Error.aspx " );
7  }

3、应用程序级级别异常处理

1  protected   void  Application_Error( object  sender, EventArgs e)
2  {
3      // 与页面级别异常处理一样。
4  }

 

4、配置文件级别异常处理

文件不存在、目录不存在等一些捕获不到的会在这里重定向到错误页面。

1  < customErrors mode = " On "  defaultRedirect = " ErrorPage.aspx " >
2     < error statusCode = " 403 "  redirect = " NoAccess.htm "   />
3     < error statusCode = " 404 "  redirect = " FileNotFound.htm "   />
4  < error statusCode = " 500 "  redirect = " InternalServerError.htm "   />
5  </ customErrors >

mode 属性:
On:未被处理的异常将用户重定向到指定的 defaultRedirect 页。此模式主要用于生产。
Off:用户收到异常信息而不是被重定向到 defaultRedirect 页。此模式主要用于开发。
RemoteOnly:只有在本地计算机上访问该站点的用户(localhost)才能收到异常信息。此模式主要用于调试。

 

二、它们之间是否存在一定的优先级呢?
     根据优先级从高到低排序:方法异常处理 > 页面异常处理 > 应用程序异常处理 >  Webconfig配置项。

三、记录这些异常信息的方式有几种呢?
  在进行其他定义之前,我们先来想想,我们捕捉这些Exception之后我们需要做些什么?我们需要知道异常发生的各种信息,所以我们需要Log。Log能方便的让我们查阅发生的异常及Log的异常信息。Log有很多方式,大概的有以下几种:
1、文本记录
2、数据库记录
3、系统事件记录(Trace)
4、第三方组件(Log4Net)

 

 

参考资料:

http://kb.cnblogs.com/page/46131/

转载于:https://www.cnblogs.com/chixiaojin/archive/2010/08/07/1794739.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值