第7章 调试、测试和异常处理PPT教学课件
合集下载
第7章 调试、测试和异常处理
}
} return true;
17
示例-Catch自定义异常
private void Submit_Click(object sender, System.EventArgs e) { if(textName.Text.Length == 0 && textEmail.Text.Length == 0) { MessageBox.Show("请填写正确的信息!", "填写提示" , MessageBoxButtons.OK , rmation); return; } try { InfoSave (textName.Text, textEmail.Text); } catch(EmailCheckException err) { MessageBox.Show(err.Message, "邮件格式错误" , System.Windows.Forms.MessageBoxButtons.OK , rmation); return; } MessageBox.Show(“发送成功。", "成功" , MessageBoxButtons.OK , rmation); }
14
示例-抛出异常
在main()方法中执行下面的代码,会抛出异常 try { Class1 cls1=new Class1(); cls1.SomeMethod(200);//参数越界 } catch(ArgumentOutOfRangException e) { Console.WriteLine(e.Message); }
15
示例-建立自定义异常
using System; public class EmailCheckException:ApplicationException { public string _mes; //重写构造函数 public EmailCheckException():base() { _mes = null; } public EmailCheckException(string message):base() { _mes = message.ToString(); } public EmailCheckException(string message, Exception myNew):base(message,myNew) { _mes = message.ToString(); } //Message属性的重载 public override string Message { get { return "格式错误"; } } }
程序调试和异常处理
water();
catch (}IOException E)
{
catch
//错误处{ 理代码
}
impurities.Show();
//错误} 处理代码
}
……. 可编辑ppt …….
try 和 catch 块 4-2
try { //程序代码 }
catch (IOException E) { //错误处理代码 }
权将无条件转到处理异常的部分代码 使用语句或表达式在执行过程中激发了某个异常的条
件,使得操作无法正常结束,从而引发异常
Try...Catch...Finally
可编辑ppt
try 和 catch 块 4-1
滤水器 杂质
过滤水
try filter_water()
{{
//程序代try码
}
{
//程序代码
System.Reflection.TargetException System.ArgumentNullException
System.FormatException System.IO.IOException
System.DivideByZeroException System.OverflowException
throw new InvalidNumberInput (UserInput + “不是有效输入 (请输入 1 和 100 之间的数字)”); } throw 可用来引发自定义异常“InvalidNumberInput”
可编辑ppt
try { //程序代码 }
catch { //错误处理代码 }
Result = Divident/Divisor
....
异常处理介绍课件
异常处理:网站运维团队迅速启动应急预案, 采取限流、清洗等措施应对攻击
结果:经过紧急处理,网站恢复正常运行,避 免了更大损失
经验教训:网站需要建立完善的异常处理机制, 定期进行应急演练,提高应对突发事件的能力。
谢谢
异常处理可以提高用户体验,减少 用户等待时间,提高用户满意度
降低损失风险
01
02
03
04
及时发现并处理异 常,降低损失风险
提高系统稳定性和 可靠性
减少停机时间和经 济损失
提高客户满意度和 信任度
保障用户体验
异常处理可以避免程 序崩溃,提高用户体 1
验
异常处理可以提高软 件的稳定性和可靠性, 4
增强用户信任度
异常处理可以及时 2 发现并修复问题,
提高软件质量
异常处理可以避免 3 数据丢失,保障用
户数据安全
异常处理的基本原则
快速响应
01
及时发现异常:通过监控系统、日志分析等方式及时发现异常
02
快速定位问题:通过日志、监控数据等快速定位问题的原因和位置
03
快速恢复服务:采取措施尽快恢复服务,减少对用户的影响
04
快速解决问题:针对问题进行修复,避免类似问题再次发生
05
快速反馈:及时向用户反馈问题处理情况,提高用户满意度
准确定位
确定异常 的类型和
原因
定位异常 的位置和
范围
分析异常 的影响和
后果
制定解决 方案和预
防措施
及时修复
01
发现异常后,立即
采取措施进行修复
02
优先修复严重程度
高的异常
03
修复过程中,尽量
2
原因分析:系统 设计缺陷,未对 数据进行有效备 份。
结果:经过紧急处理,网站恢复正常运行,避 免了更大损失
经验教训:网站需要建立完善的异常处理机制, 定期进行应急演练,提高应对突发事件的能力。
谢谢
异常处理可以提高用户体验,减少 用户等待时间,提高用户满意度
降低损失风险
01
02
03
04
及时发现并处理异 常,降低损失风险
提高系统稳定性和 可靠性
减少停机时间和经 济损失
提高客户满意度和 信任度
保障用户体验
异常处理可以避免程 序崩溃,提高用户体 1
验
异常处理可以提高软 件的稳定性和可靠性, 4
增强用户信任度
异常处理可以及时 2 发现并修复问题,
提高软件质量
异常处理可以避免 3 数据丢失,保障用
户数据安全
异常处理的基本原则
快速响应
01
及时发现异常:通过监控系统、日志分析等方式及时发现异常
02
快速定位问题:通过日志、监控数据等快速定位问题的原因和位置
03
快速恢复服务:采取措施尽快恢复服务,减少对用户的影响
04
快速解决问题:针对问题进行修复,避免类似问题再次发生
05
快速反馈:及时向用户反馈问题处理情况,提高用户满意度
准确定位
确定异常 的类型和
原因
定位异常 的位置和
范围
分析异常 的影响和
后果
制定解决 方案和预
防措施
及时修复
01
发现异常后,立即
采取措施进行修复
02
优先修复严重程度
高的异常
03
修复过程中,尽量
2
原因分析:系统 设计缺陷,未对 数据进行有效备 份。
调试、测试和异常处理 ppt课件
PPT课件
9
单步执行程序
首先可以使用单步执行来运行程序,然后跟踪代码的每 一步代码,最后找出bug在哪里。 想要单步执行,可以使用快捷键F11,或者单击菜单命令 【调试】-》【逐语句】 也可以使用快捷键F10,或者单击菜单命令 【调试】-》【逐过程】
F10,F11的区别:
F10路过一行代码中所调用的方法
PPT课件 16
中的调试工具 5-2
“监视”窗口
17
PPT课件 17
的调试工具 5-3
“快速监视”对话框
18
PPT课件 18
中的调试工具 5-4
“即时”窗 口
19
PPT课件 19
调试过程
.NET 集成开发环境
Debug:
称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
F11进入该行代码所调用的方法,进行更为细致的观 10 PPT课件
设置断点
使代码停在程序员想停的地方,就是设置断点。 使用断点的常用方法: 1 )把光标放在想要停住的代码行上,按下快捷键 F9 2 )在想要停住的代码行上,点击右键,选择【断 点】 -》【插入断点】
等
PPT课件
11
调试过程 5-1
张三转帐25000到李四的帐面上
22
PPT课件
22
异常处理(又称为错误处理)功能提供了处理程序 运行时出现的任何意外或异常情况的方法。 在 Visual C# 2010 中,当出现某个异常错误条件时, 就会创建一个异常对象。这个对象包含有助于跟踪 问题的信息。 对 .NET 类来说,一般的异常类 System.Exception 派生于 System.Object 。还有许多定义好的异常类 ( 如 : System.SystemException 、 System.ApplicationException等),他们又派生于 System.Exception 类。
程序调试与错误处理PPT课件
第6页/共20页
7.2 错误的捕获
• 使用Try…Catch来进行异常处理
7
第7页/共20页
7.2 错误的捕获
例:使用Tr y…Catch…Finally 来处理运行时数组索引值超出界限外的错误。
8
第8页/共20页
7.2 错误的捕获
例:求n!。不同异常处理会有不同错误信息。
9
第9页/共20页
7.2 错误的捕获
• 自定义异常处理:
• 遇到特殊错误,系统并没有提供此 种判断,自己也可以写程序来处理 特殊错误,Throw语句即可指到该 异常类,即自定义异常类。
10
第10页/共20页
7.2 错误的捕获
例:使用ArgumentOutOfRangeException 类。若输入月份1~12,不发生错误;若输 入其它数字,结果显示“不合理月份”。
17
第17页/共20页
7.3 代码的调试
18
第18页/共20页
End of Chapter
第19页/共20页
感谢您的观看!
第七章 程序调试与错误处理
20
第20页/共20页
11
第11页/共20页
7.3 代码的调试
• 设置断点
• 单击任何代码行左侧的灰色区域,或者右击代码行,再选择[插入断点]; • 随后出现一个红色圆点,断点已经设置成功; • 程序执行时,会在断点位置中断; • 选择[调试] | [启动]开始调试过程。
12
第12页/共20页
7.3 代码的调试
• 启用调试器
4
第4页/共20页
7.2 错误的捕获
• Exception类
类别
ArgumentOutOfRangeException
7.2 错误的捕获
• 使用Try…Catch来进行异常处理
7
第7页/共20页
7.2 错误的捕获
例:使用Tr y…Catch…Finally 来处理运行时数组索引值超出界限外的错误。
8
第8页/共20页
7.2 错误的捕获
例:求n!。不同异常处理会有不同错误信息。
9
第9页/共20页
7.2 错误的捕获
• 自定义异常处理:
• 遇到特殊错误,系统并没有提供此 种判断,自己也可以写程序来处理 特殊错误,Throw语句即可指到该 异常类,即自定义异常类。
10
第10页/共20页
7.2 错误的捕获
例:使用ArgumentOutOfRangeException 类。若输入月份1~12,不发生错误;若输 入其它数字,结果显示“不合理月份”。
17
第17页/共20页
7.3 代码的调试
18
第18页/共20页
End of Chapter
第19页/共20页
感谢您的观看!
第七章 程序调试与错误处理
20
第20页/共20页
11
第11页/共20页
7.3 代码的调试
• 设置断点
• 单击任何代码行左侧的灰色区域,或者右击代码行,再选择[插入断点]; • 随后出现一个红色圆点,断点已经设置成功; • 程序执行时,会在断点位置中断; • 选择[调试] | [启动]开始调试过程。
12
第12页/共20页
7.3 代码的调试
• 启用调试器
4
第4页/共20页
7.2 错误的捕获
• Exception类
类别
ArgumentOutOfRangeException
异常处理PPT课件
● InterruptedException(中断异常): 当前等待或睡眠线 程被其他线程中断时引发。
这类异常并非因设计或实现引起,是无法避免的。 但一般情况下,程序员应该提供相应的代码捕捉和 处理。
14
受检查的异常和不受检查的异常: 受检查的异常
Exception类及其非RuntimeException子类属于受 检查的异常;
9) System.out.println("After method.");
10) } 11) }
6
Exception in thread "main" ng.ArithmeticException: / by zero at ExceptionDivideBy0.method(ExceptionDivideBy0.java:4) at ExceptionDivideBy0.main(ExceptionDivideBy0.java:8)
一般情况下,程序员可不必理会这类异常,它们 虽然很严重,但很少发生。
12
(2) RuntimeException类及其子类: 表示设计或实现 方面的问题,例如:
● ArithmeticException(算术运算异常): 算术运算时发生 的异常情况,如整数相除,除数为零。 ● ClassCastException(强制类型转换异常): 把一个对象 引用转换成一个不合适的类型,如把一个对象引用转换成某 个子类类型。 ● NullPointerException(空引用异常): 需要对象引用时使 用了一个null引用。 ● ArrayIndexOutOfBoundsException(数组下标越界异常): 下标值超出了数组大小。 ● NumberFormatException(数字格式异常): 试图将非数 字格式字符串转换成数值。
这类异常并非因设计或实现引起,是无法避免的。 但一般情况下,程序员应该提供相应的代码捕捉和 处理。
14
受检查的异常和不受检查的异常: 受检查的异常
Exception类及其非RuntimeException子类属于受 检查的异常;
9) System.out.println("After method.");
10) } 11) }
6
Exception in thread "main" ng.ArithmeticException: / by zero at ExceptionDivideBy0.method(ExceptionDivideBy0.java:4) at ExceptionDivideBy0.main(ExceptionDivideBy0.java:8)
一般情况下,程序员可不必理会这类异常,它们 虽然很严重,但很少发生。
12
(2) RuntimeException类及其子类: 表示设计或实现 方面的问题,例如:
● ArithmeticException(算术运算异常): 算术运算时发生 的异常情况,如整数相除,除数为零。 ● ClassCastException(强制类型转换异常): 把一个对象 引用转换成一个不合适的类型,如把一个对象引用转换成某 个子类类型。 ● NullPointerException(空引用异常): 需要对象引用时使 用了一个null引用。 ● ArrayIndexOutOfBoundsException(数组下标越界异常): 下标值超出了数组大小。 ● NumberFormatException(数字格式异常): 试图将非数 字格式字符串转换成数值。
第7章 异常处理机制
异常的产生 【例7-1】数组下标越界
异常处理机制
Java的异常处理机制是通过面向对象的方法处理
异常
一.抛出异常 当程序发生异常时,不能正常执行,称为“抛 出(throw)”一个异常; 一个异常可以由jvm自动生成,也可以由程序 中的方法产生 异常对象包含了错误类型与相应的错误信息
第七章 异常处理机制
本章目标
1. 理解掌握异常的概念与异常类的层次结构 2. 理解掌握异常的产生和常见的异常类
3. 理解掌握异常处理机制和try-catch-finally语句
4. 掌握自定义异常类
§第7章 异常处理机制
学习指南
仔细阅读本章各知识点的内容, 深刻理
解 java 语言中独特的例外处理机制,掌
a[0]=0; //访问长度为0的数组,产生异常
String str=null; System.out.println(str.length()); //产生异常
常见的公用异常类
3. ClassCastException----强制类型转换
无法强制类型转换的操作,在进行强制类型转换时会 出现此异常,如 Object obj=new Object(); String str= (String) obj;
其中, throws是关键字,异常类列表中可以有多个异 常类,用逗号隔开; 抛出异常的方法并不处理异常,
注意: throw与throws
在语义与用法的区别
§7.4 抛出异常类
class ts { public void go(int i) throws Exception{ if (i>0) {throw new Exception("over boounds"); } System.out.println("产生异常!"); } public static void main(String[] args) { ts x=new ts(); try{x.go();} catch(Exception e){ System.out.println(e.toString()); } } }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章 调试、测试和异常处理
• 每一个应用程序开发出来,交给客户使用前都要进行检查, 确保其没有错误并且安全可靠,才能交付使用。任何软件 都不能保证完全没有错误,程序员应尽力去发现其中的错 误并修正这些错误。发现并消除错误的过程就是调试。如 果程序调试通过,就要检测该软件是否符合用户需求,软 件中是否包含未发现的错误,这个过程成为测试。在编写 程序过程中,有些错误是可以预测到的,有些是预测不到 的,对于可预测的错误C#提供了异常处理机制,保证程序 的正确性和可靠性。本章将详细讨论C#中的调试、测试和 异常处理方法。主要内容如下:
• 这个例子中,感冒就是一个异常,因为预先考虑 到可能出现的问题,进行了合适的处理,这就是 异常处理。适当的异常处理可以避免系统终止当 前操作,程序不会出现故障,系统也不会崩溃。
7.3.2 异常类
• .NET提供了大量与异常有关的类,用来处理异常, 每一个异常类都表示一种异常,Exception类是所 有异常的基类。异常类继承关系的结构图如图7.8 所示。
• 在消除了程序中的语法错误和运行时错误后,程序依旧不 能保证完全正确,程序员可以自己进行简单的单元测试, 来确定基本功能是否完善,复杂的测试有专业测试人员进 行。什么是单元测试呢?
• 单元测试是测试隔离的单元或模块,对各种方法分别使用 不同的输入和执行参数来测试。单元测试的依据是详细设 计描述,单元测试应对模块内所有重要的控制路径设计测 试用例,以便发现模块内部的错误。单元测试多采用白盒 测试技术,系统内多个模块可以并行地进行测试。VS2008 将单元测试工具集成在IDE中,方便程序员的使用,下面通 过一个简单的例子来说明VS2008中单元测试工具的使用。
7.3 异常处理
• 利用调试和测试,可以有效地减少程序中的错误, 但是程序中的错误是不可避免的,就像人难免会 生病一样。错误是客观存在的,程序员有责任和 义务尽量减少错误的发生。面对不可避免的、可 能出现的错误,如何积极面对,以保证程序的稳 定可靠,具有非常重要的意义。
7.3.1 什么是异常
• 先来看生活中的情况。你去旅游胜地度假,往返 车票,度假期间的活动都已安排妥当,按照计划 是一个非常舒适的假期。但是在度假期间,由于 不适应当地气候,你感冒了,因为这个异常情况 的发生,不得不中止度假,这个即是出现了异常。 如果你在度假前已经考虑到可能出现感冒这种状 况,并且准备了合适的药物,经过适当的治疗, 不必终止度假,可以继续旅游,就是进行了异常 处理。
• VS2008设置断点的步骤如下: • 单击需要添加断点的代码左边的灰色区域,或者右击准备设置断点的代码行,在弹出
的快捷菜单中,单击“断点”后,再单击“插入断点”即可。图7.1为在代码中插入 断点后的代码编辑窗口。插入断点后的代码行高亮显示,代码行左边会有彩色圆点指 示。
7.2 测试
• 调试是解决错误的过程,测试是发现软件缺陷的过程,每 一个软件在交付使用前都必须经过测试,软件测试是软件 开发过程中的重要组成部分,现在已经发展成专门的技术。 本节简单介绍测试的基本概念和VS2008中如何对软件进行 单元测试。
7.3.4 关键字Finally的使用
• 【本节示例参考:\源代码\C7\Example_FinallyTest】 • 除了try…catch…结构可以进行异常处理外,C#还提供了另外一
个结构,添加一个finally语句块,语法结构如下: • 01 try • 02 { • 03 //程序代码 • 04 } • 05 catch(Exception e) • 06 { • 07 //错误处理代码 • 08 } • 09 finally • 10 { • 11 //finally语句块 • 12 }
7.1.2 VS 2008中的调试工具
• 大多数编程语言和工具都提供调试器,方便程序员观察程序的运行过程,跟踪变量的 值,从而确定错误的位置。VS2008也提供了调试器,程序员可以使用该调试器调 试.NET支持的任一种语言编写的代码。使用调试器时可以在代码中插入“断点”,断 点通知调试器程序进入中断模式,处于暂停状态。VS2008中的很多调试功能都只能在 中断模式下使用。
பைடு நூலகம்
7.3.5 使用throw引发异常
• 1.语法错误 • 2.运行时错误 • 有些程序能够顺利通过编译,但是在运行时会出现错误,例如:
将零做除数,数组的下标溢出等情况。这类错误在应用程序运行 时出现,难以调试。 • 3.逻辑错误 • 代码能够顺利通过编译,也不会因为错误退出程序,但是运行结 果却与预期的不同,这些就属于逻辑错误。例如程序员将“+”号 写成了“-”号,程序运行正常,但结果是错误的。这种错误很难 发现,也是不容易修改的错误。
7.3.3 Try和Catch捕捉、处理异常
• 【本节示例参考:\源代码\C7\Example_ExceptionTest】 • C#采用“try…catch…”语句结构来捕获和处理异常。使
用“try…catch…”语句的语法结构如下: • 01 try • 02 { • 03 //程序代码 • 04 } • 05 catch(Exception e) • 06 { • 07 //错误处理代码 • 08 }
• 为什么要对程序进行调试。 • 调试能够解决程序中的哪些问题。 • VS2008的调试工具。 • 测试的方法。 • 异常的概念和使用。
7.1 调试
• 本节首先介绍调试的基本概念,并使用VS2008提 供的调试工具调试应用程序,理解调试在程序设 计中的重要性。
7.1.1 调试的必要性
• 每一个人编写应用程序都会有犯错的时候,常见的有标点符号缺 失、关键字写错等语法错误,有时候会出现逻辑错误、运行时错 误,这些错误有的会导致程序不能正常运行,有的虽然运行正常, 但运行的结果却与预期的大相径庭。调试是解决这些问题最直接 的方法和手段,有人曾经说过:“程序其实都是调试出来的”, 从中可以看出调试的重要性。程序错误按照发生的机理可以分为 三类:
• 每一个应用程序开发出来,交给客户使用前都要进行检查, 确保其没有错误并且安全可靠,才能交付使用。任何软件 都不能保证完全没有错误,程序员应尽力去发现其中的错 误并修正这些错误。发现并消除错误的过程就是调试。如 果程序调试通过,就要检测该软件是否符合用户需求,软 件中是否包含未发现的错误,这个过程成为测试。在编写 程序过程中,有些错误是可以预测到的,有些是预测不到 的,对于可预测的错误C#提供了异常处理机制,保证程序 的正确性和可靠性。本章将详细讨论C#中的调试、测试和 异常处理方法。主要内容如下:
• 这个例子中,感冒就是一个异常,因为预先考虑 到可能出现的问题,进行了合适的处理,这就是 异常处理。适当的异常处理可以避免系统终止当 前操作,程序不会出现故障,系统也不会崩溃。
7.3.2 异常类
• .NET提供了大量与异常有关的类,用来处理异常, 每一个异常类都表示一种异常,Exception类是所 有异常的基类。异常类继承关系的结构图如图7.8 所示。
• 在消除了程序中的语法错误和运行时错误后,程序依旧不 能保证完全正确,程序员可以自己进行简单的单元测试, 来确定基本功能是否完善,复杂的测试有专业测试人员进 行。什么是单元测试呢?
• 单元测试是测试隔离的单元或模块,对各种方法分别使用 不同的输入和执行参数来测试。单元测试的依据是详细设 计描述,单元测试应对模块内所有重要的控制路径设计测 试用例,以便发现模块内部的错误。单元测试多采用白盒 测试技术,系统内多个模块可以并行地进行测试。VS2008 将单元测试工具集成在IDE中,方便程序员的使用,下面通 过一个简单的例子来说明VS2008中单元测试工具的使用。
7.3 异常处理
• 利用调试和测试,可以有效地减少程序中的错误, 但是程序中的错误是不可避免的,就像人难免会 生病一样。错误是客观存在的,程序员有责任和 义务尽量减少错误的发生。面对不可避免的、可 能出现的错误,如何积极面对,以保证程序的稳 定可靠,具有非常重要的意义。
7.3.1 什么是异常
• 先来看生活中的情况。你去旅游胜地度假,往返 车票,度假期间的活动都已安排妥当,按照计划 是一个非常舒适的假期。但是在度假期间,由于 不适应当地气候,你感冒了,因为这个异常情况 的发生,不得不中止度假,这个即是出现了异常。 如果你在度假前已经考虑到可能出现感冒这种状 况,并且准备了合适的药物,经过适当的治疗, 不必终止度假,可以继续旅游,就是进行了异常 处理。
• VS2008设置断点的步骤如下: • 单击需要添加断点的代码左边的灰色区域,或者右击准备设置断点的代码行,在弹出
的快捷菜单中,单击“断点”后,再单击“插入断点”即可。图7.1为在代码中插入 断点后的代码编辑窗口。插入断点后的代码行高亮显示,代码行左边会有彩色圆点指 示。
7.2 测试
• 调试是解决错误的过程,测试是发现软件缺陷的过程,每 一个软件在交付使用前都必须经过测试,软件测试是软件 开发过程中的重要组成部分,现在已经发展成专门的技术。 本节简单介绍测试的基本概念和VS2008中如何对软件进行 单元测试。
7.3.4 关键字Finally的使用
• 【本节示例参考:\源代码\C7\Example_FinallyTest】 • 除了try…catch…结构可以进行异常处理外,C#还提供了另外一
个结构,添加一个finally语句块,语法结构如下: • 01 try • 02 { • 03 //程序代码 • 04 } • 05 catch(Exception e) • 06 { • 07 //错误处理代码 • 08 } • 09 finally • 10 { • 11 //finally语句块 • 12 }
7.1.2 VS 2008中的调试工具
• 大多数编程语言和工具都提供调试器,方便程序员观察程序的运行过程,跟踪变量的 值,从而确定错误的位置。VS2008也提供了调试器,程序员可以使用该调试器调 试.NET支持的任一种语言编写的代码。使用调试器时可以在代码中插入“断点”,断 点通知调试器程序进入中断模式,处于暂停状态。VS2008中的很多调试功能都只能在 中断模式下使用。
பைடு நூலகம்
7.3.5 使用throw引发异常
• 1.语法错误 • 2.运行时错误 • 有些程序能够顺利通过编译,但是在运行时会出现错误,例如:
将零做除数,数组的下标溢出等情况。这类错误在应用程序运行 时出现,难以调试。 • 3.逻辑错误 • 代码能够顺利通过编译,也不会因为错误退出程序,但是运行结 果却与预期的不同,这些就属于逻辑错误。例如程序员将“+”号 写成了“-”号,程序运行正常,但结果是错误的。这种错误很难 发现,也是不容易修改的错误。
7.3.3 Try和Catch捕捉、处理异常
• 【本节示例参考:\源代码\C7\Example_ExceptionTest】 • C#采用“try…catch…”语句结构来捕获和处理异常。使
用“try…catch…”语句的语法结构如下: • 01 try • 02 { • 03 //程序代码 • 04 } • 05 catch(Exception e) • 06 { • 07 //错误处理代码 • 08 }
• 为什么要对程序进行调试。 • 调试能够解决程序中的哪些问题。 • VS2008的调试工具。 • 测试的方法。 • 异常的概念和使用。
7.1 调试
• 本节首先介绍调试的基本概念,并使用VS2008提 供的调试工具调试应用程序,理解调试在程序设 计中的重要性。
7.1.1 调试的必要性
• 每一个人编写应用程序都会有犯错的时候,常见的有标点符号缺 失、关键字写错等语法错误,有时候会出现逻辑错误、运行时错 误,这些错误有的会导致程序不能正常运行,有的虽然运行正常, 但运行的结果却与预期的大相径庭。调试是解决这些问题最直接 的方法和手段,有人曾经说过:“程序其实都是调试出来的”, 从中可以看出调试的重要性。程序错误按照发生的机理可以分为 三类: