- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章
调试、异常处理
2
目标
理解如何调试应用程序和排除错误
在程序中进行错误捕获和错误处理
3
调试的必要性
在事物处理过程中,系统显示错误消息
必须重新输入全部信息
在部署应用程序前必须先对其进行调试
4
错误类型
错误类型
语法错误
逻辑错误
运行时错误
语法错误、缺少括号等
在编译时确定
易于确定
错误的算法导致错误结果、公式错误等
在执行过程中确定
难以调试
内存泄漏、以零作除数、异常
在运行时确定
难以调试
5
调试过程
调试器
观察程序的运行时行为
跟踪变量的值
确定语义错误的位置
6
调试的关键----断点
暂停
可在代码中插入“断点”,以便在特
定行处暂停执行该代码
断点设置与跟踪方式
添加断点 (F9)
启动调试(F5)
过程调试 (F10)
单步调试 (F11)
案例演示
8
调试过程
右键单击所需代码行,以设置断点
选择“插入断点”
9
调试过程
选择“调试” “继续”以便继续执行程序
10
调试过程
.NET 集成开发环境
Debug模式
Release模式
11
VS2008 中的调试工具
“局部变量”窗口
12
VS2008 中的调试工具
“监视”窗口
13
VS2008中的调试工具
“即时”窗口
断点高级设置
断点的触发条件设置
案例演示
异常处理
程序
执
行
异常处理
恢复
程序
16
在 C# 程序中,引发异常共有以下两种方式
使用显式 throw 语句来引发异常。在此情况下,控制权将无条件转到处理异常的部分代码
使用语句或表达式在执行过程中激发了某个异常的条件,使得操作无法正常结束,从而引发异常
Try...Catch...Finally
常见的异常类型
.NET Framework
公共语言运行
时引发的异常
用户程序
引发的异常
异常的常用属性
属性名称
说明
Source
此属性表示导致异常发生的应用程序或对象的名称
Message
提供引起异常的详细信息
StackTrace
此属性提供在堆栈上所调用方法的详细信息,并首先显示最近调用的方法
InnerException
对内部异常的引用,如果此异常基于前一个异常,则内部异常指最初发生的异常
19
try 和 catch 块
滤水器
filter_water()
{
try
{
water();
}
catch
{
impurities.Show();
}
}
…….
…….
过滤水
杂质
//程序代码
//错误处理代码
try
{
//程序代码
}
catch (IOException E)
{
//错误处理代码
}
20
try 和 catch 块
try
{
//程序代码
}
catch (IOException E)
{
//错误处理代码
}
I/O 设备可以生成错误
21
try 和 catch 块
try
{
//程序代码
}
catch( on)
{
//错误处理代码
}
可处理系统中的任何一种异常
System.Excepti
22
使用 finally
try
{
//程序代码
}
catch
{
//错误处理代码
}
finally
{
//finally 代码
}
无论控制流如何都会执行
23
多重 catch 块
try
{
//程序代码
}
catch (IOException E)
{
//错误处理代码
}
catch (OutOfMemoryException E)
{
//错误处理代码
}
用于捕捉两种异常的“catch”块,注意继承关系
24
嵌套 块
try
{
try
{
//程序代码
}
catch (Exception E1)
{
//错误处理代码
}
}
catch (Exception E2)
{
//错误处理代码
}
25
嵌套 块
try
{
//程序代码
}
catch (Exception E1)
{
try
{
//错误处理代码
}
catch (Exception E2)
{
//错误处理代码
}
}
26
嵌套 块
try
{
//程序代码
}
catch (Exception E2)
{
//错误处理代码
}
finally
{
try
{
//程序代码
}
catch (Exception E1)
{
//错误处理代码
}
Finally
{
}
}
自定义异常
继承于ApplicationException基类
可以更好的提供信息和实现自定义的功能。
28
try 和 catch 块
if (UserInput 1 UserInput 100)
{
throw new I
文档评论(0)