文件名称:定制异常-机器人学导论第三版课后习题答案
文件大小:14.06MB
文件格式:PDF
更新时间:2024-07-29 05:32:28
c#入门经典 第五版 高清 中文 文字版
13.2 定制异常 第 7 章讨论了异常,以及如何使用 try...catch...finally 块处理它们。我们还论述了几个标准的.NET 异常,包括异常的基类 System.Exception。在应用程序中,有时也可以从这个基类中派生自己的异常 类,并使用它们,而不是使用标准的异常。这样就可以把更具体的信息发送给捕获该异常的代码, 让处理异常的捕获代码更有针对性。例如,可以给异常类添加一个新属性,以便访问某些底层信息, 这样异常的接收代码就可以做出必要的改变,或者仅给出异常起因的更多信息。 定义了异常类后,就可以使用“调试 ➪ 异常”(Debug ➪ Exceptions)对话框中的“添加”(Add) 按钮,把它添加到 VS 可以识别的异常列表中,然后定义与异常相关的操作,如第 7 章所述。 在 System 名 称 空 间 中 有 两 个 基 本 的 异 常 类 ApplicationException 和 SystemException,它们派生于 Exception。SystemException 用作.NET Framework 预定 义的异常的基类,ApplicationException 由开发人员用于派生自己的异常类。但最近的 最佳实践方式是不从这个类中派生异常,而应使用 Exception。ApplicationException 类 在未来可能会被废弃。 给 CardLib 添加定制异常 定制异常的用法 好通过升级 CardLib 项目来说明。如果试图访问索引小于 0 或大于 51 的扑克 牌,Deck.GetCard()方法目前就会抛出一个标准的.NET 异常,但下面改为使用一个定制异常。 首先,需要在 BegVCSharp\Chapter13 目录中创建一个新的类库项目 Ch13CardLib,像以前一样 把类从 Ch12CardLib 中复制过来,并把名称空间改为 Ch13CardLib。接着定义该异常。方法是使用 在新类文件 CardOutOfRangeException.cs 中定义的一个新类,这个新类是使用“项目 ➪ 添加类” (Project ➪ Add Class)添加到 Ch13CardLib 项目中的: 可从 wrox.com 下 载源代码 public class CardOutOfRangeException : Exception { private Cards deckContents; public Cards DeckContents { get { return deckContents; } } public CardOutOfRangeException(Cards sourceDeckContents) : base("There are only 52 cards in the deck.") { deckContents = sourceDeckContents; } } 代码段 Ch13CardLib\CardOutOfRangeException.cs 329