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/

posted on 2010-08-07 15:38  小小池  阅读(495)  评论(0编辑  收藏  举报