11+程序出错了怎么办?—调试、错误处理与异常

上传人:sx****84 文档编号:243129695 上传时间:2024-09-16 格式:PPT 页数:25 大小:549KB
返回 下载 相关 举报
11+程序出错了怎么办?—调试、错误处理与异常_第1页
第1页 / 共25页
11+程序出错了怎么办?—调试、错误处理与异常_第2页
第2页 / 共25页
11+程序出错了怎么办?—调试、错误处理与异常_第3页
第3页 / 共25页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,11,章,程序出错了怎么办?,调试、错误处理与异常,程序设计不可能是一帆风顺的,其间总会发生各种各样的问题。例如,可能有键盘输入错误,也可能有程序的语法错误或者编写的程序有逻辑错误等。此时就需要对程序进行调试,以期找出问题并改正。,VB.NET 2008,的调试器是构建在开发环境中的,提供简单、灵活的调试功能。,除此之外,在程序运行期间也可能发生这样或者那样的错误,这称为运行时错误。出现运行时错误时,程序会发出异常,以便通过在程序内查找用于处理错误的代码来处理错误。如果未找到这样的代码,程序将停止并需要重新启动。由于上述情况可能导致数据丢失,最好在可能预见错误发生的任何地方均创建错误处理代码,这称为异常处理。,1,章节内容,11.1,编程中的错误,11.2,调试,11.3,异常处理,2,11.1 编程中的错误,编译错误,编译错误也称为编译器错误或者语法错误,是指妨碍程序运行的错误。,运行时错误,运行时错误是指在程序运行时发生的错误。这些错误通常是在程序试图执行不可能执行的操作时发生。,逻辑错误,逻辑错误是指妨碍程序执行您希望它执行的操作的错误。代码在编译和运行时可能都没有错误,但某个操作的结果却可能不是您期望的结果。,3,11.2 调试,查找并修复错误的过程称为调试。调试是我们在编程时查找错误并修正错误的最好方式。,VB.NET 2008提供很多调试程序的方法,包括控制程序的执行流程、设置断点、查看运行时变量值等。,4,11.2.1,控制执行,调试程序时常需要控制程序的执行流程,包括开始执行、中断执行、结束执行、单步执行、执行到指定位置等。,5,除此之外,还可以让代码执行到指定光标处,方法是在希望执行到的代码处右击,在打开的右键菜单中单击【运行到光标处】。,6,11.2.2,断点,在调试一大段程序时,可能会想让代码运行到某一处,然后停下来检查是否是你所预期的结果,这时就要使用断点了。,发生中断时,则称程序和调试器处于,中断模式。,可以让代码在任何定义断点的地方停止,并且可以在任何地方设置断点。,注意,在设置断点的那行之前就会停止代码的执行。,7,断点设置,设置断点很容易,通过单击代码行旁边的灰边上的想要设置断点的位置,就可以在设计时或运行时的代码中进行设置了。断点是一个红色的圆点。,8,此时,可以逐步向下执行代码或者运行到指定的光标位置,同时在执行的过程中,查看某些关键变量的值,来查找代码的逻辑问题。,查看变量的值最简单的方法就是将鼠标放在这个变量上,就会在打开的,DataTips,窗口中查看当前变量的值,。,9,11.2.3,即时窗口,当我们通过断点和单步执行,发现某些代码可能存在问题,而要试图修改时,可能并没有很明确的方法来修复错误,而是需要多次尝试。,这时我们希望可以在不改变实际代码的情况下测试可能的修复以及代码修改后带来的结果,即时窗口可以帮助我们完成这样的功能。,10,在中断模式下,即时窗口可以用于查看变量或者表达式的值或者运行代码段。例如,在中断模式下查看变量,k,的值,可以在即时窗口输入以下代码。,Debug .Print (k),或者,?k,二者均返回变量,k,当前的值,。,并且,即时窗口也支持智能感知。,11,即时窗口最有用的地方在于,它可以在设计阶段执行代码,并得到代码的执行结果。特别在试图修改代码时,可以直接在即时窗口运行修改后的代码,以查看结果是否正确。,12,11.2.4,可视化工具,可视化工具用于创建窗口或其他界面,以一种适合于变量或对象的数据类型的有意义的方式来显示变量或对象。,文本可视化工具,HTML,可视化工具,XML,可视化工具,数据集可视化工具,均用于字符串对象,用于,DataSet,、,DataView,和,DataTable,对象,13,11.3 异常处理,11.3.1,异常的概念,在,Visual Basic.NET,中,错误机制是基于,异常,这个概念的。异常可被抛出以引发错误,并且在处理错误时可捕捉异常。,如果没有提供任何类型的错误处理,当错误发生时,用户会接受到关于这个未处理的异常的消息,这个消息是由,CLR,提供的,并不是用户友好的,用户很难理解。,14,11.3.2,结构化异常处理,结构化异常处理是用,Try.Catch.Finally.End Try,语句实现的,。,Try,能够引发一个异常的代码,Catch,处理异常的代码,Finally,实现清理工作的代码(如关闭数据库连接等),End Try,15,Try和End Try语句都是必需的。Catch和Finally语句可以共同使用于一个Try块中,但是必需至少使用其中之一。,通常将可能导致异常的代码放在Try块中。如果这段代码在执行过程中产生异常,则转到Catch块中对该异常进行相应处理。最后,无论是否引发异常,Finally块中的代码最后一定会被执行。,16,也可以这样理解:Try块中放置正常的程序代码,Catch块中放置异常处理代码,而Finally块中放置一些无论是否发生异常都必须执行的代码,如释放资源、设置相关属性等善后工作。,17,例子:除法计算器,考虑到用户的输入,有可能存在,以下,两种情况,。,一是用户在【除数】文本框和【被除数】文本框没有输入整数,而是输入了其他内容,如字符串,。,二是用户在【被除数】文本框输入了“,0,”,产生了被零除的问题。,因此可能存在两种类型的异常。,18,1 Private Sub btnDevide_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDevide.Click,2 ,清空结果文本框,3 txbResult.Text = ,4 ,结构化处理块,5 Try,6 ,获取用户输入并转换成整型,如果无法转换,则引发,InvalidCastException,异常,7 Dim numerator As Integer = CInt(txbNumerator.Text),8 Dim denominator As Integer = CInt(txbDenominator.Text),9 ,除法运算,如果被除数为,0,,则引发,DivideByZeroException,异常。注意浮点数除法不引发该异常,Dim result As Integer = numerator denominator,txbResult.Text = result.ToString,12 ,异常处理,13 Catch ex1 As InvalidCastException,14 MessageBox.Show(,必需输入两个整型的数字, Invalide Number Format, MessageBoxButtons.OK, MessageBoxIcon.Error),15 Catch ex2 As System.DivideByZeroException,MessageBox.Show(ex2.Message, “Attemped Divide By Zero”, MessageBoxButtons.OK, MessageBoxIcon.Error),End Try,End Sub,捕获,InvalidCastException,异常,捕获,DivideByZeroException,异常,19,运行结果,正常情况,20,运行结果,捕获InvalidCastException异常,21,运行结果,捕获System.DivideByZeroException异常,22,其余可能的异常怎么办?,增加一个,catch,块:,Catch ex3 As Exception,MessageBox.Show(ex3.Message, ,发生其他异常, MessageBoxButtons.OK, MessageBoxIcon.Error),这样其他类型的异常也都可处理了。,23,11.3.3,常见异常,.NET,框架中所有的异常均继承自,Exception,类,。,有若干个异常类是直接从,Exception,继承,其中包括,ApplicationException,和,SystemException,,这两个类构成几乎所有运行库异常的基础。,24,常见的运行库异常,异常类型,说明,示例,IndexOutOfRangeException,仅当错误地对数组进行索引时,才由运行库引发,在数组的有效范围外对数组进行索引:,arr(arr.Length+1),NullReferenceException,仅当引用,null对象时,才由运行库引发,Dim o As object = Nothing,o.ToString( ),AccessViolationException,仅在访问无效内存时由运行库引发,当与非托管代码或不安全的托管代码互操作时或者使用无效指针时发生,InvalidOperationException,当处于无效状态时,由方法引发,从基础集合移除,Item后调用Enumerator.GetNext( ),ArgumentNullException,由不允许参数为,null的方法引发,Dim s As String = Nothing,Dim str As String = calculate Console.WriteLine(str.IndexOf(s),ArgumentOutOfRangeException,由验证参数是否位于给定范围内的方法引发,Dim s As String = string,s.Chars(9),25,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!