ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter11

上传人:E**** 文档编号:89192750 上传时间:2019-05-21 格式:PPT 页数:65 大小:1.93MB
返回 下载 相关 举报
ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter11_第1页
第1页 / 共65页
ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter11_第2页
第2页 / 共65页
ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter11_第3页
第3页 / 共65页
ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter11_第4页
第4页 / 共65页
ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter11_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter11》由会员分享,可在线阅读,更多相关《ASP.NET Web程序设计 教学课件 ppt 作者 祁长兴_ chapter11(65页珍藏版)》请在金锄头文库上搜索。

1、ASP.NET Web程序设计,11,错误处理,第,章,本章内容,11.1 错误类型,11.2 防御性处理,11.3 错误处理的方法,11.4 异常处理,11.5 常用策略与方法,11.1 错误类型,错误一般分为两种:语法错误和逻辑错误。语法错误比较容易发现,处理起来也很简单,然而逻辑错误发现和处理起来就相对复杂一些。 11.1.1 语法错误 11.1.2 逻辑错误,语法错误就是指的编程语言没有按照C#语法规则规定的去书写 ,例如: int i=0.5;,11.1.1 语法错误,逻辑错误在代码的语法上不会发现错误,但从实现的功能看,无法达到最终想要的结果。 因此,逻辑错误不像语法错误那么简单被

2、发现和捕捉到 。,11.1.2 逻辑错误,11.1.2 逻辑错误,1. 使用Write方法,例11-1,使用控制台程序模拟显示一个含4个数据元素一维数组的每个元素,class Program static void Main(string args) int i; int a=new int41,2,3,4; for(i=0;i=4;i+) Console.WriteLine(ai); ,11.1.2 逻辑错误,1. 使用Write方法,例11-1,运行效果,11.2 防御性处理,所谓防御性处理,是指在编写程序过程中,考虑到最终使用者的各种输入习惯和可能性,尽可能编写程序算法,使用户能够输入系

3、统中满足需要的数据,得到尽可能友好的画面和提示信息,帮助用户正确使用程序。 1. 参数检查 2. 避免假设 3. 验证控件的使用 4. 提示信息 5. 自定义错误页面,11.3 错误处理的方法,如何应对错误或者采用什么措施能够尽量地绕过错误,使得少犯错误或者减少犯错的几率,是必须解决的问题。 11.3.1 查找错误 11.3.2 调试跟踪,查找错误一般分为5步:设置断点逐语句调试逐过程调试跳出停止调试 1.设置断点 所谓断点,是调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析。 设置断点可以遵循一个原则:在可能出现错的地方设置断点,当程序执行到断点的时候就会自动处于中断状态,然后就

4、可以一步步进行下面的逐语句或者逐过程的调试了。,11.3.1 查找错误,下图所示程序左侧的红色点就是断点,及程序在该处中断,因此此程序运行结果将得到一个空的DOS黑屏。,11.3.1 查找错误,设置断点的方法主要有两种: 在需要设置断点的代码行的左侧(红点处)单击,在程序的左侧就出现一个红色的圆点,这就表示该行代码设有断点。 在设置断点的代码,选择“断点” “插入断点”命令。,11.3.1 查找错误,逐语句(Step Into)就是一句一句地调试,当遇到异常或者断点时候程序会暂停下来,提示错误。 例如在函数调用时,黄色小箭头就会跟踪到函数内部单步执行,函数执行完以后箭头会跳出该函数,跳回到函数

5、调用的位置,继续向下一条语句执行。,11.3.1 查找错误,2. 逐语句调试,仍然用上图的例子 ,如果使用普通的“启动调试”,程序将在断点处停止,结果如上图一样。,11.3.1 查找错误,如果使用“逐语句调试”,则程序将一句一句的调试,在断点处停下,然后继续调试将跳过断点,调试每一句后在VS.NET左下方的错误列表中都可以检测到“局部变量”、“即时窗口”、“错误列表”等信息。,11.3.1 查找错误,下图所示为逐语句调试过程的一个局部变量表。,11.3.1 查找错误,逐过程(Step Over)调试允许单步执行代码,即一次执行代码。 逐过程命令将会逐行执行代码而不会进入到任何被调用函数、构造函

6、数或者属性函数的内部。 在遇到函数调用之前,执行效果和逐语句调试是完全一样的。一旦遇到函数,黄色箭头不会进入函数内部执行,而是直接执行函数,执行完函数则指向下一条语句,继续下一条语句的执行。,11.3.1 查找错误,3. 逐过程调试,跳出(Step Out)命令允许你告诉调试器执行完当前调用的方法后立即返回到中断模式。 当你调试到一个代码很长的方法中而又想跳出方法的时候,这个跳出命令将会给你带来很多方便。 如果只想调试一个函数的一部分代码的时候,调试完想快速跳出也可以使用这个命令。,11.3.1 查找错误,4. 跳出,停止调试会话包括多种方法,如: 一种比较通常的做法是关闭当前可执行程序。 全

7、部分离:只是简单地将调试器跟被调试进程分离而不中断他们,11.3.1 查找错误,5. 停止调试,Microsoft.NETFramework中提供了用于调试和跟踪的类,其中Debug和Trace就是两个常用的典型调试跟踪的类。 这两个类都是命名空间System.Diagnostics下的用于调试的类。 Debug类仅在调试版本中有效 Trace类在调试版本和正式版本中均有效。,11.3.2 调试跟踪,11.3.2 调试跟踪,1. 使用Write方法,例11-2,使用debug类在控制台应用程序中输出信息,namespace debug class TestDebug public static

8、 void TestDebugMethod() Debug.Listeners.Add(new TextWriterTraceListener(Console.Out); Debug.AutoFlush = true; Debug.Indent();,11.3.2 调试跟踪,Debug.WriteLine(“Debug WriteLine()“); Console.WriteLine(“Console.WriteLine()“); Debug.WriteLine(“Debug WriteLine2()“); Debug.Unindent(); Console.Read(); static vo

9、id Main(string args) TestDebug.TestDebugMethod(); ,11.3.2 调试跟踪,1. 使用Write方法,例11-2,运行效果,11.3.2 调试跟踪,1. 使用Write方法,例11-3,使用trace类在控制台应用程序中输出信息,namespace traceTest public class TestTrace public static void TheTrace() Trace.Listeners.Add(new TextWriterTraceListener(Console.Out); Trace.WriteLine(“Trace !“

10、); Console.ReadKey(); ,11.3.2 调试跟踪,1. 使用Write方法,例11-3,使用trace类在控制台应用程序中输出信息,class Program static void Main(string args) TestTrace.TheTrace(); ,11.3.2 调试跟踪,1. 使用Write方法,例11-3,运行效果,11.4 异常处理,异常处理是由try语句来处理的。try语句提供了一种机制来捕捉块执行过程中发生的异常。 11.4.1 异常类 11.4.2 异常处理语句,11.4 异常处理,异常处理包括重复执行以下步骤,直到找到一个与该异常相匹配的cat

11、ch子句。 (1)由里层到外层的执行每一个包围抛出点(异常被抛出的最初位置)的try语句。 (2)如果当前的成员函数调用中没能定位异常处理,则调用终止。并且在该成员函数调用点将该异常抛给调用者,重复执行上一步。 (3)如果该异常终止了当前线程或进程的所有成员函数调用,则说明该线程或进程中不存在对异常的处理,它将自行终止。,11.4.1 异常类,Exception类是所有其它异常类的基类,它主要有两个派生类:ApplicationException和SystemException 。,11.4.1 异常类,1)与参数相关的异常类:ArgumentException类和FormatExceptio

12、n类,其中ArgumentException是参数异常的基类,它有两个派生类: ArgumentOutOfRangeException类表示传递方法的参数值超出了可接受的范围。 ArgumentNullException类 该异常由不允许空参数的方法抛出。,1. SystemException派生类,11.4.1 异常类,2)与成员访问相关的异常类:MemberAccessException类,它有3个直接派生类: FieldAccessException表示访问字符段成员失败所引发的异常。 MethodAccessException表示访问方法成员失败所引发的异常。 MissingMembe

13、rException表示访问成员不存在所发生的异常。,1. SystemException派生类,11.4.1 异常类,3)与数组相关的异常: IndexOutOfRangeException表示访问的数组下标超过数组长度引发的异常; ArrayTypeMismatchException表示在数组中存储类型不正确的元素; 使用了维数错误的数组,将引发RankException异常。,1. SystemException派生类,11.4.1 异常类,4)与内存和磁盘相关的异常: 如果程序的运行得不到足够的内存,将引发OutOfMemoryException异常; 如果程序引用了内存中的空对象,那

14、么将引发NullReferenceException异常; IOException类表示在进行文件输入输出操作时所引发的异常。,1. SystemException派生类,11.4.1 异常类,4)与内存和磁盘相关的异常:IOException类有如下5个直接派生类: DirectoryNotFoundException,表示没有找到指定的目录而引发异常。 FileNotFoundException,表示没有找到指定的文件而引发的异常。 EndOfStreamException,表示已经到达流的末尾而引发的异常。 FileLoadException,表示不能加载文件而引发的异常。 PathTo

15、oLongException,表示文件或目录的路径名走出规定的长度而引发的异常。,1. SystemException派生类,11.4.1 异常类,5)与算术运算有关的异常 ArithmeticException类表示与算术运算与关的所有异常类的基类。其派生类有: DivideByZeroException,表示整数或十进制去处中试图除以0时所引发的异常。 NotFiniteNumberException,表示浮点数运算中出现正负无穷大或非数值时所引发的异常。 OverflowException,表示运算溢出时所引发的异常。,1. SystemException派生类,11.4.1 异常类,6

16、)其它常见异常 类型转换失败所引发的InvalidCastException异常; 对当前对象进行了无效操作所引发的InvalidOperationException异常; 试图合并两个不匹配的委托对象时所引发的MulticastNotSupportedException异常; 操作系统堆栈溢出所引发的StackOverflowException异常 Win32应用程序(非托管代码)所引发的Win32Exception等,,1. SystemException派生类,11.4.1 异常类,Exception类是.NET类库中所有其他异常类的基类,是对所有异常的抽象。 其构造函数可以不带参数,也可以指定一个字符串类型的参数作为描述异常的信息。 .NET也提供很多有用的Exception类属性,这些属性也有很多可以直接实用的。,2. SystemException属性,11.4.1

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号