课件第七章面向对象程序设计_第1页
课件第七章面向对象程序设计_第2页
课件第七章面向对象程序设计_第3页
课件第七章面向对象程序设计_第4页
课件第七章面向对象程序设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计 C#第七章 调试和错误处理 洪中 错误的不可避免性No matter how good a programmer is, there will always be problems that slip through, and part of being a good programmer is realizing that this is the case and being prepared to deal with it. 主要内容错误类型 VS中的调试方法非中断模式下的调试中断模式下的调试C#中可用的异常处理技术错误类型非致命错误(如:Spelling mistake

2、 )致命错误: (Fatal errors)语法错误; (Syntax errors)运行时错误; (Runtime errors)逻辑错误。 (Logic errors)错误的发现:易难非中断模式下的调试通过控制台输出调试信息通过Output窗口输出调试信息通过外部的文本文件(或系统日志)输出调试信息使用VS IDE中提供的跟踪点进行非中断模式下的调试信息输出通过控制台输出调试信息通过Console.WriteLine()函数向控制台输出调试信息。通过Output窗口输出调试信息在运行期间将调试信息写入Output窗口的Debug视图的两种方法:(位于 System.Diagnostics

3、命名空间下)Debug.WriteLine() Debug.Write() Trace.WriteLine() Trace.Write()两者的异同点及与Console.WriteLine()在用法上的不同。Debug与Trace的异同Debug类或Trace类都属于System.Diagnostics类库,用于将运行时消息写到“输出”窗口。如果只在程序的调试版本中输出,则使用 Debug 类。如果要同时在调试版本和发布版本中输出,则使用 Trace 类。向Output窗口输出信息除了应用程序的程序输出外,“输出”窗口还可以显示下列信息: 调试器已经加载或卸载的模块。引发的异常。退出的进程。退

4、出的线程。有条件输出Debug.WriteIf() Trace.WriteIf()Debug.WriteLineIf() Trace.WriteLineIf()VS IDE中的跟踪点输出调试信息而不必修改代码的一种方式。VS IDE中的跟踪点从现有断点创建跟踪点诊断输出与跟踪点的优缺点中断模式下的调试暂停应用程序以进入中断模式程序执行到断点时自动进入中断模式(仅用于Debug模式)断点的配置当程序执行到断点所在语句时:立即进入中断模式(缺省);当布尔表达式的值为true时,进入中断模式;当遇到某断点的次数达到某个预定值时,进入中断模式;当从上次遇到断点以来某个变量或表达式的值发生了更改时,进入

5、中断模式;输出文本到Output窗口或执行一个宏。(跟踪点)断点的使用断点的添加;断点的删除与禁用;断点的属性:进入中断模式的其他方式使用断言产生(抛出)一个异常使用断言断言(或 Assert 语句)测试您作为 Assert 语句的参数指定的条件。如果此条件计算为 true,不发生操作。如果此条件计算为 false,则断言失败。如果正在调试版本中运行,则程序进入中断模式。Debug.Assert 和 Trace.Assert 方法进入中断模式后的可用工具监视变量的内容单步执行代码立即与命令窗口调用堆栈窗口监视变量的内容AutosLocalsWatch NQuick Watch也可用于在中断模式

6、下修改变量的值监视变量的内容“自动”窗口显示在当前代码行和上一代码行中使用的变量。“局部变量”窗口显示对于当前上下文或范围来说位于本地的变量。通常,这是当前正在执行的过程或函数。在“监视”窗口中可以添加要监视其值的变量。此外,还可以添加调试器所能识别的任何有效表达式。“快速监视”对话框在概念上类似于“监视”窗口,但是“快速监视”每次只能显示一个变量或表达式。 单步执行代码Step Into:执行并移动到下一个要执行的语句上;Step Over:同上,但不进入嵌套的代码块,包括函数;Step Out:执行到代码块的末尾,在执行完该语句块后,重新进入中断模式。立即和命令窗口通过Command窗口可

7、以手动执行VS操作通过Immediate窗口可以执行源代码调用堆栈窗口实际上是一个嵌套的函数调用列表,显示了当前函数、调用它的函数、以及调用函数的函数,调用的位置也被记录下来。异常处理异常:代码运行时产生的错误。在异常发生并且未被处理时,应用程序会中断执行,并显示异常相关的信息。例:System.IndexOutOfRangeException以File.Open 方法为例,可能抛出以下异常: 异常处理结构 try . catch ( e) . finally . 异常处理结构try-catch 语句由一个 try 块后跟一个或多个 catch 子句构成,这些子句指定不同的异常处理程序。其中:

8、try 块包含可能导致异常的保护代码。该块一直执行到引发异常或成功完成为止。catch 子句使用时可以不带任何参数,这种情况下它捕获任何类型的异常,并被称为一般 catch 子句。它还可以接受从 System.Exception 派生的对象参数,这种情况下它处理特定的异常。异常处理结构在同一个 try-catch 语句中可以使用一个以上的特定 catch 子句。这种情况下 catch 子句的顺序很重要,因为会按顺序检查 catch 子句。将先捕获特定程度较高的异常,而不是特定程度较小的异常。在 catch 块中可以使用 throw 语句再次引发已由 catch 语句捕获的异常。 如果要再次引发当前由无参数的 catch 子句处理的异常,则使用不带参数的 throw 语句。 异常处理结构finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码。控制总是传递给 finally 块,与 try 块的退出方式无关。The trycatch StatementThe catch ClauseThe catch ClauseThe finally BlockF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论