您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp.net >> 正文

ASP.NET中异常处理使用(详细)

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-28 我要参与讨论

  verflowException oe)
10:   {
11:    Console.WriteLine("Computing {0} caused an overflow exception", nComputeTo);
12:    throw;
13:   }

    注意,我不必规定所声明的异常变量。尽管它是可选的,但你也可以这样写:
    throw oe;
    现在有时还必须留意这个异常。

7.3.2  创建自己的异常类
    尽管建议使用预定义的异常类,但对于实际场合,创建自己的异常类可能会方便。创建自己的异常类,允许你的异常类的使用者根据该异常类采取不同的手段。
    在清单 7.9 中出现的异常类 MyImportantException遵循两个规则:第一,它用Exception结束类名。第二,它实现了所有三个被推荐的通用结构。你也应该遵守这些规则。
    清单  7.9   实现自己的异常类  MyImportantException

1: using System;
2:
3: public class MyImportantException:Exception
4: {
5:  public MyImportantException()
6:   :base() {}
7:
8:  public MyImportantException(string message)
9:   :base(message) {}
10:
11:  public MyImportantException(string message, Exception inner)
12:   :base(message,inner) {}
13: }
14:
15: public class ExceptionTestApp
16: {
17:  public static void TestThrow()
18:  {
19:   throw new MyImportantException("something bad has happened.");
20:  }
21:
22:  public static void Main()
23:  {
24:   try
25:   {
26:    ExceptionTestApp.TestThrow();
27:   }
28:   catch (Exception e)
29:   {
30:    Console.WriteLine(e);
31:   }
32:  }
33: }

    正如你所看到的,MyImportantException 异常类不能实现任何特殊的功能,但它完全基于System.Exception类。程序的剩余部分测试新的异常类,给System.Exception 类使用一个catch 语句。
    如果没有特殊的实现而只是给MyImportantException定义了三个构造函数,创建它又有什么意义呢?它是一个重要的类型--你可以在catch语句中使用它,代替更为普通的异常类。可能引发你的新异常的客户代码可以按规定的catch代码发挥作用。
    当使用自己的名字空间编写一个类库时,也要把异常放到该名字空间。尽管它并没有出现在这个例子中,你还是应该使用适当的属性,为扩展了的错误信息扩充你的异常类。

7.4  异常处理的“要”和“不要”
  作为最后的忠告之语,这里是对异常引发和处理所要做和不要做的清单:
。当引发异常时,要提供有意义的文本。
。要引发异常仅当条件是真正异常;也就是当一个正常的返回值不满足时。
。如果你的方法或属性被传递一个坏参数,要引发一个ArgumentException异常。
。当调用操作不适合对象的当前状态时,要引发一个 InvalidOperationException异常。
。要引发最适合的异常。
。要使用链接异常,它们允许你跟踪异常树。
。不要为正常或预期的错误使用异常。
。不要为流程的正常控制使用异常。
。不要在方法中引发 NullReferenceException或IndexOutOfRangeException异常。

   7.5  小结
    这一章由介绍溢出校验开始。你可以使用编译器开关(默认是关),使整个应用程序允许或禁止溢出校验。如果需要微调控制,你可以使用校验和非校验语句,它允许你使用或不使用溢出校验来执行一段代码,尽管没有给应用程序设置开关。
    当发生溢出时,一个异常就被引发了。如何处理异常取决于你。我提出了各种途径,包括你最有可能贯穿整个应用程序使用的:try、catch 和finally 语句。在伴随的多个例子中,你学到了它与WIN32结构异常处理(

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

在google里搜索更多ASP.NET中异常处理使用(详细)

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明