调试和错误处理

·         错误类型:

在编译期间和运行期间,致命错误(语法错误)都会使应用程序完全失败,语义错误或逻辑错误比较微妙,可能会使应用程序执行不正确,或者以未预料的方式执行;

  • 输出调试信息:

我们在编写代码,把有帮助的信息输出到output窗口中,以帮助在IDE中进行调试。为此需要使用DebugTrace系列函数,其中Debug函数在发布版本中会被忽略。对应投入生产的应用程序,应把调试输出写入日志文件,在VS中,还可以使用跟踪点输出调试信息;

  • 中断模式:

可以通过断点,判断语句,或者在发生未处理的异常时,手工进行中断模式(暂停应用程序的状态)。可以在代码的任意位置添加断点,在VS中,还可以把断点配置为仅在特定条件下中断执行,在中断模式下,可以检查变量的内容(使用各种调试信息窗口),每次执行一行代码,以帮助确定哪里出现了错误;

  • 异常:

异常时运行期间发生的错误,可以通过编程方式捕获和处理这种错误,以防止应用程序终止。跳跃函数或处理变量时,可能会发生许多不同类型的异常,还可以使用throw关键字生成异常;

  • 异常处理:

代码中未处理的异常会使应用程序终止。使用try,catchfinally代码块处理异常。Try 块标记了一个启用异常处理的代码段,catch块包含的代码仅在异常发生时执行,它可以匹配特定类型的异常,还可以保护多个catch 块,Finally 块指定异常处理完毕后执行的代码,如果没有发生异常,Finally 块就指定在try块执行完毕后执行的代码,只能包含一个Finally块,如果包含了catch 块,Finally块是可选的。

 

1.两种方式执行应用程序:

·         Debug

F5绿色play 按钮

·         debug

Debug |Start  without debugging ctrl + F5

2.调试:如何使用调试技巧确定未按预期方式执行的那些代码,并修改它们。

3.应用程序状态:

 1.非中断模式(运行期间或正常执行)

Using system.diagnostics;

输出调试信息两种方式:诊断输出和跟踪点

16. C# -- 调试和错误处理

诊断输出:debug.writeline();  trace.writeline() (不常用

诊断输出:从应用程序中输出调试结果时使用这种方法,尤其是在要输出的字符串比较复杂,涉及几个变量或许多信息的情况下,使用该方法比较好。如果要在发布模式下获得执行应用程序的调试结果,trace命令是唯一选择;

Debug模式下,记述在循环中计算出结果所采取的步骤;

Release 模式下,仅能看到计算的最终结果,因为没有调用debug.writeline()函数;

16. C# -- 调试和错误处理

跟踪点:是把信息输出到output窗口的另一种方法,是VS的一个功能。其作用和Debug.WriteLine()相同。只输出调试信息且不修改代码;(常用

16. C# -- 调试和错误处理

2.中断模式调试

16. C# -- 调试和错误处理

16. C# -- 调试和错误处理

断点:

16. C# -- 调试和错误处理

16. C# -- 调试和错误处理

16. C# -- 调试和错误处理

16. C# -- 调试和错误处理

4.监视变量的内容:

16. C# -- 调试和错误处理

5.单步执行代码

16. C# -- 调试和错误处理

6Immediate command 窗口

16. C# -- 调试和错误处理

7Call stack 窗口

16. C# -- 调试和错误处理

16. C# -- 调试和错误处理

8.错误处理,处理异常

Try … catch.. finally

16. C# -- 调试和错误处理

16. C# -- 调试和错误处理

16. C# -- 调试和错误处理

16. C# -- 调试和错误处理

 

9列出和配置异常

Debug –exceptions—common language runtime exceptions.可看到system 名称空间中的异常

10异常处理的注意事项

 为比较特殊的异常提供catch catch块顺序错误应用程序就会编译失败。

若使用throw,该异常不会有当前的try.. catch.. finally 块处理