第十章 调试与异常处理

一、调试

1.调试的必要性

·保证程序的正确性

2.错误分类

 ①语法错误:不合C#语法,无法编译通过

 ②运行时错误:试图去执行一个无法实施的操作,会抛出异常

 ③逻辑错误:错误的公式或算法造成,可以编译通过且不会抛出异常,较难发现

3.调试的过程

·调试器的优点

·调试提供:计算变量的值,编译变量,暂停程序的执行

·断点调试

·应用程序的模式

① 调试模式 

② 发布模式:执行效率高,但不支持调试

·调试快键: 

F10 单步跟踪调试执行,

F11 同F10,但跟踪到方法体内

F5  从一个断点切换到下一个断点

4.VS.net中的调试工具

·局部变量:可为变量修改值

·监视

·快速监视

·即时窗口:? i+j

5.Debug类

·发布模式下Debug类相当于被注释,所有代码不起效果

二、测试

1.定义

·使用各种数据对程序进行测试,以确保其符合设计规范

2.测试类型

 ①单元测试:开发人员来做,NUnit工具可用来帮助创建测试用例

 ②集成测试:测试人员来做

 ③黑盒测试:黑盒测试也称功能测试,是以用户的角度,从输入数据与输出数据的对应关系出   发进行测试的。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构   和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书   的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

 ④白盒测试:白盒测试也称结构测试或逻辑驱动测试这一方法是把测试对象看作一个打开的   盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路          径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致

三、测试与调试的区别

1.测试的目的:对开发人员认为正确的部分进行确认,直到找到不正确的地方

2.调试的目的:找出bug出现的原因并改正bug

四、异常处理

1.C#中异常概述

·异常:

·这要通过“异常处理”来实现,允许程序中的异常存在

2.System.Exception类

·System.Exception类是所有异常的基类

·System.ApplicationException类:自定义异常

·引发异常

 ①使用显式throw引发 ②程序代码出错激发某个异常条件

·捕获异常

  ①try和catch块 

②通用catch块:用来捕获所有类型的异常(System.Exception e)

  ③try可以有多个catch块,但只能有一个通用catch块

  ④将通用catch块放在最后以保证肯定拦截到异常

·在函数的调用处,如果没有捕获住异常,则直接跳转到更高一层的调用者

·如果一直没有捕获该异常,C#将会使用默认的异常处理函数,该处理函数可能会让程序最终跳出Main函数并导致程序异常终止

3.使用throw引发异常

4.Finally块

5.多重catch块