1. 首页
  2. 课程学习
  3. .Net
  4. 定制异常-机器人学导论第三版课后习题答案

定制异常-机器人学导论第三版课后习题答案

上传者: 2024-07-27 10:06:19上传 PDF文件 14.06MB 热度 6次

13.2 定制异常

第7章讨论了异常,以及如何使用try...catch...finally块处理它们。我们还论述了几个标准的.NET异常,包括异常的基类System.Exception。在应用程序中,有时也可以从这个基类中派生自己的异常类,并使用它们,而不是使用标准的异常。这样就可以把更具体的信息发送给捕获该异常的代码,让处理异常的捕获代码更有针对性。可以给异常类添加一个新属性,以便访问某些底层信息,这样异常的接收代码就可以做出必要的改变,或者仅给出异常起因的更多信息。定义了异常类后,就可以使用“调试➪异常”(Debug ➪ Exceptions)对话框中的“添加”(Add)按钮,把它添加到VS可以识别的异常列表中,然后定义与异常相关的操作,如第7章所述。

在System名称空间中有两个基本的异常类ApplicationExceptionSystemException,它们派生于ExceptionSystemException用作.NET Framework预定义的异常的基类,ApplicationException由开发人员用于派生自己的异常类。但最近的最佳实践方式是不从这个类中派生异常,而应使用ExceptionApplicationException类在未来可能会被废弃。

那么,如何在CardLib项目中添加定制异常呢?这可以通过升级CardLib项目来说明。如果试图访问索引小于0或大于51的扑克牌,Deck.GetCard()方法目前就会抛出一个标准的.NET异常,但我们可以改为使用一个定制异常。

需要在BegVCSharpChapter13目录中创建一个新的类库项目Ch13CardLib,像以前一样把类从Ch12CardLib中复制过来,并把名称空间改为Ch13CardLib。接着定义该异常。方法是使用在新类文件CardOutOfRangeException.cs中定义的一个新类,这个新类是使用“项目➪添加类” (Project ➪ Add Class)添加到Ch13CardLib项目中的:


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; 

    } 

}

更多关于C#异常处理的内容,可以参考以下资源:C#异常含异常格式抛出异常和自定义异常详谈.NET的异常处理C#异常处理。这些链接提供了更详细的讲解,帮助你更好地理解和应用异常处理技术。

用户评论