zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    集合框架
    5.异常
    接口小结
    多态(3)面向对象的三大特征之三
    面向对象编程(1)继承
    第五章博客
    《MySQL数据库》MySQL集群工具mycat安装
    《MySQL数据库》MySQL分区表
    《MySQL数据库》MySQL读写分离(Atlas)
    《Redis内存数据库》Redis数据类型和基本操作
  • 原文地址:https://www.cnblogs.com/chixiaojin/p/1794739.html
Copyright © 2011-2022 走看看