043程序调试与错误处理汇总PPT课件
合集下载
第16章 常见错误和程序调试ppt
• if(a=b) printf("a equal to b");
• C编译系统将(a=b)作为赋值表达式处理,将b的值 赋给a,然后判断a的值是否零,若为非零,则作 为“真”;若为零作为假。如果a的值为3,b的值 为4,
a≠b,按原意不应输出“ae q u a lt ob”。而现在 先将b的值赋给a,a也为4,赋值表达式的值为4。 if语句中的表达式值为真(非零),因此输出“ae q u a lt o b”。
for(i=0;i<10;i++) scanf("%d",&a(i)); }
• C语言中对数组的定义或引用数组元素时必须用 方括弧。
• (13) 在定义数组时,将定义的“元素个数”误认 为是“可使用的最大下标值”。
main( )
{int a[10]={1,2,3,4,5,6,7,8,9, 10};
• (3) 未注意int型数据的数值范围。
• 一般微型计算机上使用的C编译系统,对一个整 型数据分配两个字节。因此一个整数的范围为
-215~215-1,即-32768~32767。常见这样的程序 段:
int num;
num=89101; printf("%d",num);
• 得到的却是23565,原因是89101已超过32767。两 个字节容纳不下89101,则将高位截去。见图16.1。 即将超过低16位的数截去。即将89101减去216(即 16位二进制所形成的模)。89101-65536=23565。
• scanf("%d,%d",&a,&b);
• (6) 误把“=”作为“等于”比较符。
• 在许多高级语言中,用“=”符号作为关系运算符 “等于”。例如,在BASIC或PASCAL程序中都 可以写
• C编译系统将(a=b)作为赋值表达式处理,将b的值 赋给a,然后判断a的值是否零,若为非零,则作 为“真”;若为零作为假。如果a的值为3,b的值 为4,
a≠b,按原意不应输出“ae q u a lt ob”。而现在 先将b的值赋给a,a也为4,赋值表达式的值为4。 if语句中的表达式值为真(非零),因此输出“ae q u a lt o b”。
for(i=0;i<10;i++) scanf("%d",&a(i)); }
• C语言中对数组的定义或引用数组元素时必须用 方括弧。
• (13) 在定义数组时,将定义的“元素个数”误认 为是“可使用的最大下标值”。
main( )
{int a[10]={1,2,3,4,5,6,7,8,9, 10};
• (3) 未注意int型数据的数值范围。
• 一般微型计算机上使用的C编译系统,对一个整 型数据分配两个字节。因此一个整数的范围为
-215~215-1,即-32768~32767。常见这样的程序 段:
int num;
num=89101; printf("%d",num);
• 得到的却是23565,原因是89101已超过32767。两 个字节容纳不下89101,则将高位截去。见图16.1。 即将超过低16位的数截去。即将89101减去216(即 16位二进制所形成的模)。89101-65536=23565。
• scanf("%d,%d",&a,&b);
• (6) 误把“=”作为“等于”比较符。
• 在许多高级语言中,用“=”符号作为关系运算符 “等于”。例如,在BASIC或PASCAL程序中都 可以写
第13章程序调试和错误处理精品PPT课件
13.2.1 Visual Basic三种模式
3.中断模式 中断模式使运行中的程序处于挂起状态。一
旦发生了错误,就应进入中断模式来调试代码。 在此模式下,可以使用各种调试工具,如设置断 点、改变某变量的值、观察某变量的值等,以便 发现或者更正错误。
13.2.1 Visual Basic三种模式
以下情况的发生时都会使程序自动地进入中断模式: (1)语句产生运行时错误。 (2)“添加监视”对话框中定义的中断条件为真 时(与定义方式有关)。 (3)执行到一个设有断点的代码行。 (4)执行“运行”菜单中的“中断”命令或单击 “ Ctrl+Break”键。
第13章 程序调试和错误处理
目录
13.1 错误类型 13.2 代码调试 13.3 错误处理
13.1 错误类型
Visual Basic程序设计中常见的错误类型可以 分为三种:语法错误(Syntax Errors)、运行错误 (RunTime Errors)及程序逻辑错误(Logic Errors)。
调试工 具
作用
断点
程序运行到该处将暂时停止 运行
逐语句
执行程序代码的下一行,并 跟踪到过程中
逐过程
执行程序代码的下一行,但 并不跟踪到过程中
跳出
执行当前过程的其他部分, 并在调用过程的下一行 处中断执行
13.2.3 调试窗口
在中断模式下,利用调试窗口可以观察有关 变量的值。Visual Basic提供了“立即”、“本 地”、“监视”三种调试窗口。
例如:debug.print “a=”;a
(2)设置某程序行为断点后,可以直接在窗口输 入语句,如输入“?a”,则可将变量a的值显示 在窗体上,因此,立即窗口可以在中断状态下使 用。在运行状态时可以在窗口输入代码,来测试 某个命令的使用。
程序调试PPT课件教学
高级大数据人才培养丛书
第4章 程序调试
4.1 异常 4.2 断言 4.3 日志 4.4 调试器 习题
1 of 56
4.1 异常
第四章 程序控制
Python有两种错误很容易辨认:语法错误和异常。
程序执行过程中产生的大多数错误是语法错误,是由于程序员的疏忽造成的,如变量未 声明、零做除数、参数传递时个数不一致,或者类型匹配问题、文件打开方式与文件操 作冲突,等等;也可能是程序执行过程中遇到的不可预知的错误,如内存或硬盘空间不 足、网络连接失败、文件不能打开或系统出错等。这些错误产生后如果不做适当处理, 程序的正常执行将被中断,这是用户不可接受的。
3 of 31
4.1 异常
第四章 程序控制
Python中有很多内置的异常类型,它们都是由BaseException类派生出来的。表4-1描 述了经常使用的异常类型,利用它们可以快速准确判断异常类型,为修正错误带来方便。
4 of 31
4.1 异常
异常类型 AttributeError
IOError ImportError IndentationError IndexError
5 of 31
4.1 异常
第四章 程序控制
【例4-1】 NameError和ZeroDivisionError异常的示例。 >a=3 >b=0 > print(a + c)
>print(a / b)
6 of 31
4.1 异常
【例4-2】 SyntaxError和IndexError异常的示例。 >if a > b
第四章 程序控制
3.try-except语句执行顺序 执行try子句中的语句块(在关键字try和关键字except之间的语句): (1)如果没有异常发生,又有else子句,就执行else子句的代码;否则,执行try 语句之后的代码。 (2)如果在执行try子句中的语句块的过程中发生了异常,那么try子句的语句块中 余下的部分将被忽略。 (3)如果异常的类型和关键字except之后的异常类型相符,则对应的except子句 将被执行,以完成异常处理,然后执行try语句之后的代码,程序不会中断。 (4)如果异常不能与所有except子句的异常类型匹配,则该异常会传递到上层的 try语句中处理,如果上层的try语句没有处理异常或上层没有使用try语句,则程序 中断执行。 (5)如果有finally子句,无论try子句是否产生异常,finally子句中的语句都会被执 行。
第4章 程序调试
4.1 异常 4.2 断言 4.3 日志 4.4 调试器 习题
1 of 56
4.1 异常
第四章 程序控制
Python有两种错误很容易辨认:语法错误和异常。
程序执行过程中产生的大多数错误是语法错误,是由于程序员的疏忽造成的,如变量未 声明、零做除数、参数传递时个数不一致,或者类型匹配问题、文件打开方式与文件操 作冲突,等等;也可能是程序执行过程中遇到的不可预知的错误,如内存或硬盘空间不 足、网络连接失败、文件不能打开或系统出错等。这些错误产生后如果不做适当处理, 程序的正常执行将被中断,这是用户不可接受的。
3 of 31
4.1 异常
第四章 程序控制
Python中有很多内置的异常类型,它们都是由BaseException类派生出来的。表4-1描 述了经常使用的异常类型,利用它们可以快速准确判断异常类型,为修正错误带来方便。
4 of 31
4.1 异常
异常类型 AttributeError
IOError ImportError IndentationError IndexError
5 of 31
4.1 异常
第四章 程序控制
【例4-1】 NameError和ZeroDivisionError异常的示例。 >a=3 >b=0 > print(a + c)
>print(a / b)
6 of 31
4.1 异常
【例4-2】 SyntaxError和IndexError异常的示例。 >if a > b
第四章 程序控制
3.try-except语句执行顺序 执行try子句中的语句块(在关键字try和关键字except之间的语句): (1)如果没有异常发生,又有else子句,就执行else子句的代码;否则,执行try 语句之后的代码。 (2)如果在执行try子句中的语句块的过程中发生了异常,那么try子句的语句块中 余下的部分将被忽略。 (3)如果异常的类型和关键字except之后的异常类型相符,则对应的except子句 将被执行,以完成异常处理,然后执行try语句之后的代码,程序不会中断。 (4)如果异常不能与所有except子句的异常类型匹配,则该异常会传递到上层的 try语句中处理,如果上层的try语句没有处理异常或上层没有使用try语句,则程序 中断执行。 (5)如果有finally子句,无论try子句是否产生异常,finally子句中的语句都会被执 行。
程序调试和常见错误PPT学习教案
4.界值错误 (1)循环体中的语句次序有误,造成结果出错。 (2)在定义数组时,将定义的“元素个数”误认为 是“可使用的最大下标值”。 (3)do-while语句中的循环条件设置有误,致使循 环次数多一次。 (4)使用自加(++)和自减(--)运算。
第9页/共12页
12.2 C程序常见错误分析
5.运行错误 (1)输入的数据不符合要求。 (2)误认为形参值的改变会影响实参的值。 (3)使用文件时打开方式与使用情况不匹配。 (4)在有参的宏替换文本中,参数末加“()”, 引发运算顺序的不当。
第3页/共12页
12.1 程序调试
(3)运行程序。在改正语法错误和警告后,程序经过连 接时,就得到可执行的目标程序,也可能又出现了错误。 (4)结果测试。数据比较复杂,难以立即判断结果是否 正确。可以事先考虑好一批“试验数据”,输入这些数据 可以得出容易判断正确与否的结果。
第4页/共12页
12.1 程序调试
2.调试C程序的常用方法 (1)输出中间结果。 (2)注释语句和条件编译。将部分可能出现问题的语句 改成注释方式,然后调试程序,若能够得到正确的结果, 则要排除错误可能就在改成注释的部分语句中。 (3)单步运行。 (4)设置断点方法。
第5页/共12页
12.2 C程序常见错误分析
1. 输入错误 (1) 在输入数据的scanf函数中忘记使用变量的地址符。 (2)误把赋值号“=”作为等于号“= =”运算符。 (3)在用标识符时,忘记了大写字母和小写字母的区别。 (4)在不该加分号的地方加了分号。 (5)语句漏分号。 (6)对循环体中应该有花括号的复合语句,忘记加花括号。 (7)定界符号不匹配。 (8)常用符号输入错误。
提示出错的类型并非绝对准确由于出错的情况繁多而且各种错误互有关联因此要善于分析找出真正的错误而不要只从字面意义上死抠出错信息
第9页/共12页
12.2 C程序常见错误分析
5.运行错误 (1)输入的数据不符合要求。 (2)误认为形参值的改变会影响实参的值。 (3)使用文件时打开方式与使用情况不匹配。 (4)在有参的宏替换文本中,参数末加“()”, 引发运算顺序的不当。
第3页/共12页
12.1 程序调试
(3)运行程序。在改正语法错误和警告后,程序经过连 接时,就得到可执行的目标程序,也可能又出现了错误。 (4)结果测试。数据比较复杂,难以立即判断结果是否 正确。可以事先考虑好一批“试验数据”,输入这些数据 可以得出容易判断正确与否的结果。
第4页/共12页
12.1 程序调试
2.调试C程序的常用方法 (1)输出中间结果。 (2)注释语句和条件编译。将部分可能出现问题的语句 改成注释方式,然后调试程序,若能够得到正确的结果, 则要排除错误可能就在改成注释的部分语句中。 (3)单步运行。 (4)设置断点方法。
第5页/共12页
12.2 C程序常见错误分析
1. 输入错误 (1) 在输入数据的scanf函数中忘记使用变量的地址符。 (2)误把赋值号“=”作为等于号“= =”运算符。 (3)在用标识符时,忘记了大写字母和小写字母的区别。 (4)在不该加分号的地方加了分号。 (5)语句漏分号。 (6)对循环体中应该有花括号的复合语句,忘记加花括号。 (7)定界符号不匹配。 (8)常用符号输入错误。
提示出错的类型并非绝对准确由于出错的情况繁多而且各种错误互有关联因此要善于分析找出真正的错误而不要只从字面意义上死抠出错信息
调试、测试和异常处理 ppt课件
PPT课件
9
单步执行程序
首先可以使用单步执行来运行程序,然后跟踪代码的每 一步代码,最后找出bug在哪里。 想要单步执行,可以使用快捷键F11,或者单击菜单命令 【调试】-》【逐语句】 也可以使用快捷键F10,或者单击菜单命令 【调试】-》【逐过程】
F10,F11的区别:
F10路过一行代码中所调用的方法
PPT课件 16
中的调试工具 5-2
“监视”窗口
17
PPT课件 17
的调试工具 5-3
“快速监视”对话框
18
PPT课件 18
中的调试工具 5-4
“即时”窗 口
19
PPT课件 19
调试过程
.NET 集成开发环境
Debug:
称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
F11进入该行代码所调用的方法,进行更为细致的观 10 PPT课件
设置断点
使代码停在程序员想停的地方,就是设置断点。 使用断点的常用方法: 1 )把光标放在想要停住的代码行上,按下快捷键 F9 2 )在想要停住的代码行上,点击右键,选择【断 点】 -》【插入断点】
等
PPT课件
11
调试过程 5-1
张三转帐25000到李四的帐面上
22
PPT课件
22
异常处理(又称为错误处理)功能提供了处理程序 运行时出现的任何意外或异常情况的方法。 在 Visual C# 2010 中,当出现某个异常错误条件时, 就会创建一个异常对象。这个对象包含有助于跟踪 问题的信息。 对 .NET 类来说,一般的异常类 System.Exception 派生于 System.Object 。还有许多定义好的异常类 ( 如 : System.SystemException 、 System.ApplicationException等),他们又派生于 System.Exception 类。
程序调试与错误处理PPT课件
第6页/共20页
7.2 错误的捕获
• 使用Try…Catch来进行异常处理
7
第7页/共20页
7.2 错误的捕获
例:使用Tr y…Catch…Finally 来处理运行时数组索引值超出界限外的错误。
8
第8页/共20页
7.2 错误的捕获
例:求n!。不同异常处理会有不同错误信息。
9
第9页/共20页
7.2 错误的捕获
• 自定义异常处理:
• 遇到特殊错误,系统并没有提供此 种判断,自己也可以写程序来处理 特殊错误,Throw语句即可指到该 异常类,即自定义异常类。
10
第10页/共20页
7.2 错误的捕获
例:使用ArgumentOutOfRangeException 类。若输入月份1~12,不发生错误;若输 入其它数字,结果显示“不合理月份”。
17
第17页/共20页
7.3 代码的调试
18
第18页/共20页
End of Chapter
第19页/共20页
感谢您的观看!
第七章 程序调试与错误处理
20
第20页/共20页
11
第11页/共20页
7.3 代码的调试
• 设置断点
• 单击任何代码行左侧的灰色区域,或者右击代码行,再选择[插入断点]; • 随后出现一个红色圆点,断点已经设置成功; • 程序执行时,会在断点位置中断; • 选择[调试] | [启动]开始调试过程。
12
第12页/共20页
7.3 代码的调试
• 启用调试器
4
第4页/共20页
7.2 错误的捕获
• Exception类
类别
ArgumentOutOfRangeException
7.2 错误的捕获
• 使用Try…Catch来进行异常处理
7
第7页/共20页
7.2 错误的捕获
例:使用Tr y…Catch…Finally 来处理运行时数组索引值超出界限外的错误。
8
第8页/共20页
7.2 错误的捕获
例:求n!。不同异常处理会有不同错误信息。
9
第9页/共20页
7.2 错误的捕获
• 自定义异常处理:
• 遇到特殊错误,系统并没有提供此 种判断,自己也可以写程序来处理 特殊错误,Throw语句即可指到该 异常类,即自定义异常类。
10
第10页/共20页
7.2 错误的捕获
例:使用ArgumentOutOfRangeException 类。若输入月份1~12,不发生错误;若输 入其它数字,结果显示“不合理月份”。
17
第17页/共20页
7.3 代码的调试
18
第18页/共20页
End of Chapter
第19页/共20页
感谢您的观看!
第七章 程序调试与错误处理
20
第20页/共20页
11
第11页/共20页
7.3 代码的调试
• 设置断点
• 单击任何代码行左侧的灰色区域,或者右击代码行,再选择[插入断点]; • 随后出现一个红色圆点,断点已经设置成功; • 程序执行时,会在断点位置中断; • 选择[调试] | [启动]开始调试过程。
12
第12页/共20页
7.3 代码的调试
• 启用调试器
4
第4页/共20页
7.2 错误的捕获
• Exception类
类别
ArgumentOutOfRangeException
C语言程序设计实例教程(第2版)第13章程序调试与常见错误分析课件
a=3 b= 4 编译时,编译程序在a=3后面未发现分号,就把下一行 b=4也作为上一行的语句的一部分,这样就会出现语法错 误。有时编译时指出某行有错,但在该行上并未发现错误, 就应该检查上一行是否漏了分号。
14
(5) 输入输出的数据的类型与所用格式说明符不一致。 例如,若a 已定义为整型, b已定义为实型。 a=3 ; b=4.5 ; printf(" %f %d\n " , a , b) ; 编译时不给出出错信息,但运行结果将与原意不符,输 出为
9
13.2 常见错误分析
下面列举出初学者易犯的错误,以提醒读者注意。 (1) 误把“=”作为“等于”比较符。 C 语言中, “=” 是赋值运算符, “==” 才是关系运算 符“等于”。如果写成 if(a = b) printf("a equal to b") ;
10
C编译程序会将(a=b)作为赋值表达式处理,将b的值 赋给a ,然后判断a的值是否为0,若为非0,则作为“真”; 若为0,则作为“假”。如果a 的值为3 ,b的值为4 ,a≠b , 按原意不应输出“a equal to b”。而现在先将b的值赋给a, a也为4,赋值表达式的值为4 。if语句中的表达式值为“真 ”(非0),因此输出“a equal to b”。
3
2. 上机调试,即动态检查 在人工(静态)检查无误后,才可以上机调试。通过上 机发现的错误称之为动态检查。在编译时,系统会给出语 法错误的信息(包括哪一行有错以及错误类型),用户可以 根据提示的信息具体找出程序中出错之处并进行修改。应 当注意的是:有时提示的出错行并不是真正出错的行,如 果在提示出错的行上找不到错误的话,应当到上一行再找。 另外,有时提示出错的类型并非绝对准确,由于出错的情 况繁多而且各种错误互有关联,因此要善于分析,找出真 正的错误,而不要死抱住提示的出错信息不放,钻牛角尖。
14
(5) 输入输出的数据的类型与所用格式说明符不一致。 例如,若a 已定义为整型, b已定义为实型。 a=3 ; b=4.5 ; printf(" %f %d\n " , a , b) ; 编译时不给出出错信息,但运行结果将与原意不符,输 出为
9
13.2 常见错误分析
下面列举出初学者易犯的错误,以提醒读者注意。 (1) 误把“=”作为“等于”比较符。 C 语言中, “=” 是赋值运算符, “==” 才是关系运算 符“等于”。如果写成 if(a = b) printf("a equal to b") ;
10
C编译程序会将(a=b)作为赋值表达式处理,将b的值 赋给a ,然后判断a的值是否为0,若为非0,则作为“真”; 若为0,则作为“假”。如果a 的值为3 ,b的值为4 ,a≠b , 按原意不应输出“a equal to b”。而现在先将b的值赋给a, a也为4,赋值表达式的值为4 。if语句中的表达式值为“真 ”(非0),因此输出“a equal to b”。
3
2. 上机调试,即动态检查 在人工(静态)检查无误后,才可以上机调试。通过上 机发现的错误称之为动态检查。在编译时,系统会给出语 法错误的信息(包括哪一行有错以及错误类型),用户可以 根据提示的信息具体找出程序中出错之处并进行修改。应 当注意的是:有时提示的出错行并不是真正出错的行,如 果在提示出错的行上找不到错误的话,应当到上一行再找。 另外,有时提示出错的类型并非绝对准确,由于出错的情 况繁多而且各种错误互有关联,因此要善于分析,找出真 正的错误,而不要死抱住提示的出错信息不放,钻牛角尖。
第10章程序调试与错误处理-PPT文档资料
10.1 VB程序错误的类型
编译错误在 Visual Basic编译应用程序或启动运行 时就会自动检测到。这需要设置系统的“自动语法检测” 功能。设置方法:“工具”菜单→“选项”→“编辑 器”→“自动语法检测”。程序员可根据编译错误提示去 改正错误。 例10.1 编译错误示例。如下图所示,程序中的循环结 构For-Next与选择结构if-End If交叉,运行时产生编译错 误。
10.2 程序调试
10.2.2 调试窗口 在中断模式下,可用鼠标指向要观察的变量或对象属 性,以直接显示其值,另外通过立即窗口、本地窗口、监 视窗口和调用栈窗口等,可以监视程序运行过程中变量的 变化情况。 1)立即窗口 主要用于查看变量的值。 立即窗口使用的主要方式有: (1) Debug.Print [输出列表] 在程序代码中,使用DEBUG.PRINT方法,可以将输出 列表中的各项值输出到立即窗口中。 (2)立即窗口中使用Print或?语句 在立即窗口中使用Print或?语句,显示变量或对象在运行时,当一个语句执行一个不能执行 的操作,就会发生运行时错误。 例如语句:Speed = Miles / Hours 语句本身的语法无错误,但变量 Hours 的值若为零,除 法就是无效操作,这种错误,必须运行应用程序才能检测 到。 3)逻辑错误 逻辑错误导致应用程序不按预期方式执行 。从语法 角度来看,应用程序的代码是有效的,在运行时也没有无 效操作,但产生了不正确的结果。这是因为代码中存在逻 辑上的缺陷而引起的。系统不能检测出逻辑错误,只有通 过测试应用程序和分析产生的结果才能检验出来。
10.1 VB程序错误的类型
10.1 VB程序错误的类型 VB程序出现的错误可分为三大类:编译错误、运行错误 和逻辑错误。 1)编译错误 编译错误是由于编程人员未能正确构造程序代码而产生的 错误。编译错误主要包括语法错误和结构错误。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
On Error Goto 标号 其中,标号是指以字母开头的任意字符序列。
通常,该语句放置在过程的开始位置。在程序运行过程中,当该语 句后面的代码出错时,则程序就会自动跳转到标号所指定的程序行去运 行标号所指示的程序行通常为错误处理程序段的开始行。
一个使用错误处理的示例: On Error GoTo ErrLine
动态检查的基本方法是输入一组典型的数据来运行程序。程序对这
些数据处理结果应是已知的,通过运行后实际结果和预想结果相比较, 可以判断程序的正确性。
Ch4-3 程序调试与错误处理 VB调试工具
切换断点 逐过程 本地窗口 监视窗口
逐语句 跳出 立即窗口 快速监视
切换断点:“切换断点”按钮用来设置断点。 逐语句:逐条语句执行程序,每执行一条语句后就返回中断模式; 如果执行的是过程调用的代码(如Call),“逐语句”操作也会跟踪 到被调过程中继续一条语句一条语句的执行。 逐过程:是以整个函数或过程为一个整体,一次执行。逐过程与逐 语句一样,能够一条语句一条语句地执行代码。把被调用的函数或过 程当作一个语句来看待。
t=t+i
Next
Print "总和:"; t
End Sub
运行结果为:4.5,但正确答案是5.5,为什么?
Ch4-3 程序调试与错误处理 错误处理
对于某些可预见的错误,可以利用VB的错误处理程序捕获它,对 其进行适当的处理,并使程序继续执行。这样就能够使开发的软件具 有更强的适应性。
错误处理的步骤 ※ 利用Err对象记录错误的类型、出错原因等; ※ 强制转移到用户自编的“错误处理程序段”的入口; ※ 在“错误处理程序段”内,根据具体错误进行处理,如果问题 有解决方法,则在处理后返回原程序某处继续执行,否则,停止程序 执行。
常用方法 ※ Clear方法:用于清除Err对象的当前属性值; ※ Raise方法:产生错误,用于调试错误处理程序段。 例如,执行语句Err.Raise 55将产生55号运行时错误,即“文
件已打开”错误
Ch4-3 程序调试与错误处理 捕获错误语句
使用On Error语句可以捕获错误,其语法格式如下:
Ch4-3 程序调试与错误处理 Err对象
Err对象是全局性的固有对象,用来保存最新的运行时错误信息, 其属性由错误生成者设置
主要属性 ※ Number属性:数值。范围为0~65535,保存错误号; ※ Source属性:字符串。指明错误产生的对象或应用程序的名
称; ※ Description属性:字符串。用于记录简短的错误信息描述。
Ch4-3 程序调试与错误处理 错误类型
逻辑错误
逻辑错误使程序运行时得不到预期的结果。这种程序没有语法错误,
也能运行,但却得不到正确的结果。
例如,在一个算术表达式中,把乘号“*”写成了加号“+”,条件
语句的条件写错,循环次数计算错误等
示例1:要求10!,若采用:
Private Sub Form_Load()
ErrLine
‘以后出错时转移至
... ErrLine:
... Resume
‘标号 ‘返回语句
Ch4-3 程序调试与错误处理 退出错误处理语句
当指定的错误处理完成后,应该控制程序返回到合适的位置继 续执行。
返回语句Resume有三种用法: Resume [0]:程序返回到出错语句处继续执行; Resume Next:程序返回到出错语句的下一语句; Resume 标号:程序返回到标号处继续执行。
Dim t As Integer For i=1 To 10
示例1
t=t*i
Next i
Show :Print t
End Sub ‘ 运行程序时输出的结果是0
通常,调试程序过程中所花的大部分时间和精力都在逻辑错误上
Ch4-3 程序调试与错误处理 工作模式
三种工作模式:设计模式、运行模式和中断模式 设计模式 在设计模式下,可以程序调试与错误处理 VB调试工具
跳出:将连续执行完该过程的其余部分,返回调用过程的下一条 语句并回复中断模式。
本地窗口:显示当前过程中所有变量和活动窗体的所有属性值。 Me代表当前窗体;单击“+”号或“-”号
立即窗口:可以检查某个属性或者变量的值,也可以对表达式求 值,或为变量或属性赋值等。
Ch4-3 程序调试与错误处理 程序调试
程序调试一般包括静态检查和动态检查 静态检查与动态检查 静态检查程序的基本方法是逐行逐句地读程序,弄清楚每条语句的
作用,预见每条语句和模块的执行结果,判断是否与预期结果相一致, 这就是静态检查,也称人工检查。
静态检查无误后,就可以进行更有效的动态检查。通过上机调试来 发现错误称为动态检查。
编写程序代码等。 运行模式 在运行模式下,可以测试程序的运行结果,可以与应用程序对话,
还可以查看程序代码,但不能修改程序。 中断模式 在中断模式下,可以利用各种调试手段检查或更改某些变量或表
达式的值,或者在断点附近单步执行程序,以便发现错误或改正错误。
Ch4-3 程序调试与错误处理 设置断点
鼠标单击
书写代码而产生的。如:关键字写错,遗漏标点符号,括号不匹配等。 例如: Foor t = 1 To 100
运行错误 运行时的错误是指应用程序在运行期间执行了非法操作所发生的
错误。 例如:下标越界 Dim D(20) As Integer, k As Integer For k=1 To 30 D(k)=k*k Next k
监视窗口:对用户定义的表达式进行监视。
Ch4-3 程序调试与错误处理 VB调试工具
示例2:计算t=0.1+0.2+0.3+…+0.9+1的值。代码如下:
Private Sub Form_Load() Dim t As Single, i As Single
教材示例17
Show
t=0
For i = 0.1 To 1 Step 0.1
Ch4-3 程序调试与错误处理
概念
程序调试是进行程序设计的基本功之一,也是一个 实践性很强的工作,需要在实践中不断总结经验,才能 逐步提高自己的调试程序的能力。
程序调试的主要任务:查找程序的错误和排除错误
Ch4-3 程序调试与错误处理 错误类型
VB程序有三类错误类型:编译错误,逻辑错误和运行错误 编译错误 编译错误是指在程序编译过程中出现的错误。通常是由于不正确