《程序调试和异常处理.ppt》由会员分享,可在线阅读,更多相关《程序调试和异常处理.ppt(29页珍藏版)》请在三一办公上搜索。
1、第09讲 接口,余正红,目标,理解如何调试应用程序和排除错误掌握如何测试 C#应用程序了解测试和调试的区别在程序中进行错误捕获和错误处理,调试的必要性,计算机化的计费系统,在事物处理过程中,系统显示错误消息,必须重新输入全部信息,在部署应用程序前必须先对其进行调试,错误类型,错误类型,语法错误,逻辑错误,运行时错误,语法错误、缺少括号等在编译时确定易于确定,错误的算法导致错误结果、公式错误等 在执行过程中确定难以调试,内存泄漏、以零作除数、异常在运行时确定难以调试,调试过程 5-1,调试器,观察程序的运行时行为,跟踪变量的值,确定语义错误的位置,查看寄存器的内容,查看内存空间,调试过程 5-2
2、,暂停,可在代码中插入“断点”,以便在特定行处暂停执行该代码,调试过程 5-3,右键单击所需代码行,以设置断点,选择“插入断点”,调试过程 5-4,选择“调试”“继续”以便继续执行程序,调试过程 5-5,.NET 集成开发环境,Debug模式,Release模式,VS.NET 中的调试工具 5-1,“局部变量”窗口,VS.NET 中的调试工具 5-2,“监视”窗口,VS.NET 的调试工具 5-3,“快速监视”对话框,VS.NET 中的调试工具 5-4,“即时”窗口,VS.NET 中的调试工具 5-5,跨语言调试 调试使用.NET 框架编写的应用程序以及 Win32 本 机应用程序加入正在运行
3、的程序调试多个程序,Visual Studio.NET 调试器的功能,异常,网上银行,张三转帐25000到李四的帐面上,0,20,000,数据库,系统将查询发送到数据库中,tranfer_money()sendquery();.,余额 20000-25000,程序崩溃,拒绝交易,“C#”中的异常,C#中的异常处理2-1,.INPUT DivisorIF Divisor=0 THENResult=Divident/Divisor.,代码片段 1,输入除数,结果=,_,0,2,4,GOTO PREVIOUS LINE,触发异常处理程序,C#中的异常处理2-2,.INPUT DivisorResul
4、t=Divident/Divisor.,代码片段 1,“用户自定义”错误检查机制,难以检查输入的任何“特殊字符”,IF Divisor=0 THEN GOTO PREVIOUS LINEIF Divisor 0 THEN PRINT“无效输入”,运行库,运行库应当提供“错误检查机制”,System.Exception 3-1,System.Exception 3-2,System.Exception 3-3,在 C#程序中,引发异常共有以下两种方式,使用显式 throw 语句来引发异常。在此情况下,控制权将无条件转到处理异常的部分代码使用语句或表达式在执行过程中激发了某个异常的条件,使得操作无
5、法正常结束,从而引发异常,Try.Catch.Finally,try 和 catch 块 4-1,滤水器,filter_water()try water();catch impurities.Show();.,过滤水,杂质,/程序代码,/错误处理代码,try/程序代码catch(IOException E)/错误处理代码,try 和 catch 块 4-2,try/程序代码catch(IOException E)/错误处理代码,I/O 设备可以生成错误,try 和 catch 块 4-3,try/程序代码catch(E)/错误处理代码,可处理系统中的任何一种异常,System.Exceptio
6、n,try 和 catch 块 4-4,if(UserInput 100)throw new InvalidNumberInput(UserInput+“不是有效输入(请输入 1 和 100 之间的数字)”);,throw 可用来引发自定义异常“InvalidNumberInput”,使用 finally,try/程序代码catch/错误处理代码finally/finally 代码,无论控制流如何都会执行,多重 catch 块 2-1,try/程序代码catch(IOException E)/错误处理代码catch(OutOfMemoryException E)/错误处理代码,用于捕捉两种异常的“catch”块,总结,调试是搜寻和消除应用程序中的错误的过程语法错误表示编译器无法理解代码调试模式可用来重复编译和排除应用程序中的错误,直至能够成功运行“局部变量”窗口允许用户监控当前程序中所有变量的值单元测试和集成测试是测试大型应用程序的常用技术当应用程序遇到运行时错误时,就会引发异常C#中的所有异常都派生自 Exception 类,