程序的调试与异常处理.ppt
第九章 程序的调试 与异常处理,VB.NET程序设计,主讲教师:黄超男,2,本章内容:,9.1 程序的错误类型9.2 程序的调试9.3 程序的异常处理,3,学习目标,程序的错误类型程序的调试程序的异常处理,4,9.1 程序的错误类型,可以将这些错误分为四类,分别是:语法错误编译错误运行错误逻辑错误,5,9.2 程序的调试,一.VB.NET的调试工具可以通过【调试】菜单,也可以使用【调试】工具栏。可按下面的步骤打开【调试】工具栏。1.选择【视图】【工具栏】菜单项。2.在【工具栏】下的子菜单中选择【调试】命令,【调试】工具栏会出现。,6,二.常用的调试对话框错误列表窗口输出窗口【立即】对话框【监视】对话框【局部变量】对话框【Me】对话框,7,1.错误列表窗口在VB.NET中,如果开发人员的应用程序中存在没有清除的语法错误,在调试时,调试程序会查找到这些语法错误,并将错误信息显示在【错误列表】窗口中。【错误列表】窗口不但显示出错误的类型和说明,还显示出错的文件,以便开发人员快速定位和修改错误。如果要马上修改某一个错误,可以在错误列表中双击它,IDE会自动跳转到代码窗口中,并加亮显示相应的错误内容。打开“错误列表”窗口:选择【视图】【错误列表】,8,2.输出窗口Visual Basic.NET把【输出】窗口的功能分为两部分:调试和生成。在【输出】窗口中,从【生成】选项可以查看调试的程序生成的内容,包括成功的个数和失败的个数。如果没有生成失败,表明程序创建成功。如果开发人员要查看调试输出结果,可从【输出】窗口中的下拉列表框中选择【调试】选项,窗口中就显示出所有已经加载的内容和输出结果。,9,3.立即窗口Visual Basic.NET中,有一个【命令】对话框,在该对话框中可以直接使用VB.NET的各种命令与系统交互。【命令】对话框有两种不同的模式:命令模式和立即模式。命令模式主要用来执行命令,立即模式主要用于调试程序。在调试应用程序执行函数或语句等操作时,可使用立即模式查看,并更改变量的值。通过执行【调试】【窗口】【即时】命令,可以以立即模式打开【命令】对话框。,10,4.【监视】对话框【监视】对话框用于显示当前被监视表达式的值。【监视】对话框是最有用的对话框之一,在逐语句运行的情况下,通过该对话框可以看到每执行一条语句时,监视表达式值的变化情况。【监视】对话框只能在运行模式或中断模式下打开,打开方法是执行【调试】【窗口】【监视】命令。若要在【监视】对话框中添加被监视表达式,只需单击【监视】对话框名称列最下面一行单元格,在其中输入要监视的表达式即可。,11,5.局部变量对话框【局部变量】对话框可显示当前过程中所有局部变量的值。当程序从一个过程执行到另一个过程时,【局部变量】对话框的内容也会随之改变。该对话框只显示当前所执行过程中局部变量的值。要打开【局部变量】对话框,可执行【调试】【窗口】【局部变量】命令。6.【Me】对话框【Me】对话框用于显示在窗体类中定义的变量和对象的当前值。,12,三.调试方法1.设置程序断点断点是应用程序暂时停止执行的位置,也是让应用程序进入中断模式的地方。在程序设计中,可以在中断模式和设计模式下设置和删除断点。在调试程序时,按照程序的功能,可在怀疑有错误的语句处设置断点,这样有利于发挥测试程序的功能和发现程序的逻辑错误。设置断点的方法:1)在代码窗口中,单击要设置断点的那一行代码,然后按【F9】键。2)在代码窗口中,在要设置断点的那一行代码行上,单击鼠标右键并选择【插入断点】命令。3)在代码窗口中,在要设置断点的那一行代码行的左边界上的竖条上单击。,13,2.跟踪程序执行当程序出错的具体位置不易确定,只能够猜测到在某个范围内可能存在问题时,需要在此范围内追踪程序的执行结果,逐条地执行语句。这种运行方式称为”跟踪”。VB.NET提供的跟踪方式有:逐语句(Step Into):逐语句执行方式为一次执行一条语句,也叫单步执行。每执行一条语句之后,开发人员可以使用【即时】窗口、【局部变量】窗口或【监视】窗口查看语句执行的效果。逐过程(Step Over):编写复杂的应用程序时,应用程序的一个过程通常会调用另一个过程或函数,有时候,并不想了解调用过程的执行细节,而只想关注当前过程的执行情况,可以使用【逐过程】命令。跳出(Step Out):【跳出】命令连续执行当前过程剩余部分的语句,并在调用该过程的下一行处中断执行。,14,9.3 程序的异常处理,一.非结构化的异常处理非结构化异常处理通过Err对象和On Error,Resume语句来实现。1.Err对象在Visual Basic中,产生的异常信息都会反映在一个对象中,这个对象就是Err。通过这个对象就可以获取异常的所有信息,如异常码、异常的信息描述等。Err对象是一个具有全局范围的固有对象,用户不必在程序中重新定义它。Err对象最常用的属性是Description属性和Number属性。Description属性表示异常的信息,Number属性表示异常码,它是132767之间的整数。,15,2.On Error语句On Error语句放在代码块的开始处,它将处理在该块内发生的任何错误。如果在执行On Error语句后过程中引发了异常,程序流程将跳转到On Error语句中指定的位置。常用的语句形式:1)On Error GoTo Line作用:如果发生运行时错误,则将流程跳转到该Line参数中指定的行号和行标签,并激活错误处理程序。说明:指定行必须与On Error GoTo Line语句位于同一过程中。2)On Error Resume Next作用:若当前行有错,程序将继续执行代码的下一行,而忽略当前的异常。,16,二.结构化异常处理TryCatchFinally控制结构是结构化异常处理的基本结构。它测试代码片段,筛选执行过程中产生的异常,根据产生的异常类型做出不同的响应。,语法格式:Try tryStatements Catchexception As typeWhen expression catchStatements Exit Try Finally finallyStatements End Try,17,说明:tryStatements:可能发生错误的语句。Catch:可以有多个catch块,如果在处理try块期间发生异常,则按文本顺序检查每个catch语句,以确定它是否处理该异常。Exception:表示已引发异常。任何变量名称。其初始值是引发的错误的值。它将与catch一同使用以指定所捕获的错误。Type:指定类筛选器的类型,如果Exception的值是type指定的类型的值,则该标示符将绑定到异常对象。When expression:当expression结果为true时,捕获异常。catchStatements:处理相关的try块中所发生错误的语句。Exit Try:中断trycatchfinally结构。如果有finally块,则转到finally块继续执行。Finally:在执行离开try语句的任何部分时执行。finallyStatements:在所有其他错误处理结束后执行的语句。,18,了解程序的错误类型掌握程序的调试方法会应用程序的异常处理。,总结:,19,作业:,1.理解本章的内容。2.练习调试程序的方法3.自编程序练习非结构化异常处理。4.自编程序练习结构化异常处理。5.完善自己所选系统的功能实现。,20,