第6章 错误处理 程序调试及文件操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字符串属性设置为零长度字符串。
函数Error(错误号):根据参数“错误号”返回一个字符串来 描述对应的错误
6.1.4 Resume语句
1. 功能:当错误被跟踪并采取一定的措施后,程序执行流程必 须返回到应用程序,这种控制是通过Resume语句实现。 2. Resume表示形式: Resume:重新执行引起错误的语句,这可能比较危险,因为 如果错误没有被正确处理,可能会出现死循环。 Resume Next :程序将从出现错误的语句的下一条语句开始 执行 Resume 标号: 程序将从标号所指示的语句开始执行
格式:
FileLen(文件号)
6.6 文件的操作
在程序中对文件的操作,通常按3个步骤进行:
打开文件
读出或写入
关闭文件
6.7 顺序文件的打开与关闭
1.打开顺序文件—— Open 语句 格式: Open FileName For [Input|Output| Append] As 文件号 [Len = 缓冲区长度] 例如:OPEN “C:\TEMP\A.TXT ” FOR Input AS #1 OPEN OPEN ‘读文件
print
Write
例2. 编程把一个文本框中的内容,以文件形式存入磁盘。假定文
本框的名称为myText1,文件名为Myfile.dat。 方法1: 把整个文本框的内容一次性地写入文件。 Open “test.txt" For Output As #1 Print #1, myText.Text Close #1
除了没有数据类型或者数据项长度的含义以外,它与 随机访问很相似。
二进制访问模式是以字节数来定位数据,在程序中可 以按任何方式组织和访问数据,对文件中各字节数据直接 进行存取。
特点:灵活性很大; 相对的, 程序更复杂。
6.5 文件操作函数
1.FreeFile函数 : 功能: 使用FreeFile函数可以把一个未使用的文件号赋给指定变量。 当用Open语句打开文件时,使用代表文件号的变量,可以不必 考虑具体的文件号。当打开的文件较多,特别在一些通用过程 中访问文件时,可以避免打开正在使用的文件号。 格式: FreeFile[<区间号>] 其中:<区间号>等于0或1。 省略时(默认等于0),返回1~255之间的文件号: <区间号>等于1时,则返回256~511之间的文件号。
2.Loc函数 功能: 返回文件中的当前记录号;对于二进制文件,它将返回最 近读写的一个字节的位置。 格式: Loc(文件号)
3.Lof 函数 功能:返回已打开文件的字节数
格式: Lof(文件号)
例如:
LOF(1):返回#1文件的长度,如果返回0值,则表示该
文件是一个空文件。
4. Eof 函数 功能: Eof 函数将返回一个表示文件指针是否到达文件末尾的 标志。如果到了文件末尾,Eof 函数返回TRUE(-1),否 则返回FALSE(0)。 格式:
第6章 错误处理和文件操作
1. 错误处理
2. 程序调试
3. 文件操作
6.1 错误处理
1. 错误种类:语法错误、运行错误、逻辑错误 语法错误(Syntax errors ):不符合VB语法的错误,如关键字出 错、非法的参数等。 运行错误(Run-time errors ):超出了程序的控制范围,如变量 的范围范围溢出、文件没有找到等。VB允许你跟踪这样的错误, 并努力改正它们。 逻辑错误(Logic errors ):最难发现的,带有逻辑错误的程序 可以运行,但运行结果通常是错误的。VB的调试器有助于发现这 种错误。 2. 减少错误的方式: 仔细设计应用程序,设计时间越长,调试所需的时间就越少。 适度使用程序注释 对变量、对象及过程使用一致、有意义的名称。
2. 关闭文件——Close 语句
格式:
Close [文件号列表 ] 其中: 文件号列表 :可选项,为文件号列表,如:#1, #2, #3, 如果省略,则将关闭Open语句打开的所有活动文件。 例如: Close #1,#2,#3
6.8 顺序文件的写操作
1.Print语句
格式:
PRINT #<文件号>,[<输出列表>]
写的文件,每个数据项(又称记录)的长度必须相同。结构体
数据经常以这种形式存储。在这种文件结构中,每个数据项 都有唯一的一个编号,所以在读取数据时,只要知道数据项 编号,便可以直接读取数据项。
特点:存取速度快,易更新;但占用空间大,设计程序较复杂
3.二进制文件
二进制文件(Binaryfile)是字节的集合,直接把二 进制码存放在文件中。
格式: INPUT #文件号,变量列表
把读出的每个数据项分别存放到所对应的变量。
格式: LINE INPUT #文件号,字符串变量
读一行到变量中,读出的一行内容不包含回车、换行符。
格式: INPUT$(读取字符数, #文件号)
从文件中读取指定数目的字符。包括回车、换行符
说明: 输出列表为用分号或逗号分隔的变量、常量、空格和定 位函数序列。 与窗体的Print方法功能一样。
2 Write语句
格式: Write #<文件号>,[<输出列表>]
说明: 1)输出列表中的各数据项之间用“,”隔开 2)字符型数据用“ ”引住 3)每一输出行后自动加回车符
例1. Print与Write语句输出数据结果比较。
6.1.1 跟踪运行错误并处理它
1. 针对:运行错误
2. 跟踪错误的方法:使用关键字On Error,语法如下:

On Error GoTo errlabel
含义:此行下面的语句段中如果出现运行时错误,将跳到errlabel 标签处执行。
6.1.2 错误处理框架
1. Sub SubExample() 2. . 3. . [Declare variables, ...] 4. . 5. On Error GoTo HandleErrors ‘错误跟踪开始 6. . 7. . [Procedure code] ‘在执行这段代码过程中出现任何错 误时,程序都将跳到HandleErrors处开始执行 8. . 9. Exit Sub 10.HandleErrors: 11. . 12. . [Error handling code] ‘根据错误类型,选择处理方法 13. . 14.End Sub
二进制文件
顺序文件(Sequential File)是普通的文本文 件。顺序文件中的数据项按顺序一个接一个地排列。 存取数据时,必须按数据项顺序逐个进行。数据项可 大可小,以“换行符”为分隔符号。
特点:结构简单; 但不能灵活存取,适用于不经常修改 的文件
2.随机文件
随机文件(Random Access File)是可以按任意次序读
1. Sub SubExample() 2. . 3. . [Declare variables, ...] 4. . 5. On Error GoTo HandleErrors 6. . 7. . [Procedure code] 8. . 9. Exit Sub 10. HandleErrors: 11. Select Case MsgBox(Error(Err.Number), vbCritical + vbAbortRetryIgnore, "Error Number" + Str(Err.Number)) 12. Case vbAbort 13. Resume ExitLine 14. Case vbRetry 15. Resume 16. Case vbIgnore 17. Resume Next 18. End Select 19. ExitLine: 1. Exit Sub 20. End Sub
6.2 调试VB程序
针 对:逻辑错误 调度前提:程序进入中断模式 最常用的三个窗体:立即窗口、本地窗口和观察窗口。可 以通过“调试”工具栏调出这三个窗口
功能:测试一个变量的值、设置断点、观察变量和表达式的值、 手动控制程序执行、决定哪一个过程已经被调用、改变变量和属 性的值(在观察窗口中)
6.1.3 常用的错误处理的函数和过程
On Error GoTo 0 :如果在过程中想关闭错误跟踪,则可以使 用此语句 对象Err的属性Number:表示与当前错误相对应的错误号。
Err.Raise 错误号:模拟一个错误号,表示运行错误发生, 目的是为了测试过程的错误处理功能。
Err.Clear:将 Err 对象之数值属性重新设置为零,并将其
进入中断模式的方式
可以通过四种方式进入中断模式:
1. 2. 3. 4.
执行到预先设置的断点处 程序运行过程中按下Ctrl+Break组合键 遇到一个没有跟踪的错误 执行stop语句
例6-2 调试例子(演示)
6.4 文件分类
根据访问文件的方式将文件分成3类:
顺序文件、 1.顺序文件
随机文件、
Eof(文件号)
在应用中,一般使用以下格式检测是否到达文件尾: Do While Not EOF(文件号) Loop FileLen(文件名)
5. FileDateTime函数
功能:
返回文件被创建或最后修改的日期和时间。
格式:
FileDateTime(文件号)
6.FileLen函数
功能:
返回一个Long,代表一个文件的长度,单位是字节。
Private Sub Form_Click()
Dim Str As String, Anum As Integer Open "D:\Myfile.dat" For Output As #1 Str = "ABCDEFG" Anum = 12345 Print #1, Str, Anum Write #1, Str, Anum Close #1 End Sub ‘逗号作为格式符
3.
4. 5. 6. 7.
Case vbAbort
Resume ExitLine Case vbRetry ‘实际应用程序中在这个位置需要添加修复错误的语句 Resume Case vbIgnore
8.
9.
Resume Next
End Select
10. ExitLine:
1.
如何使用这段代码?
Exit Sub
“C:\TEMP\B.TXT ” FOR Output AS #2 ‘写文件 “C:\TEMP\C.TXT ” FOR Append AS #3 ‘追加内容
dim filenumber
filenumber=Freefile
Open “c:\a.dat” for output as # filenumber
例6-1 简单的错误跟踪程序 (演示)
功能:输入一个错误号(参见下一页),产生一个错误对话框。
典型的错误号及错误描述
Error Number 6 9 11 13 16 20 52 53 55 61 70 92 Error Description Overflow Subscript out of range Division by zero Type mismatch Expression too complex Resume without error Bad file name or number File not found File already open Disk full Permission denied For loop not initialized
6.1.5 Leabharlann Baidu常的错误处理过程:
1.
2.
HandleErrors:
向用户提供一个错误发生、错误描述并请用户选择处理错误方式 的对话框。
Select Case MsgBox(Error(Err.Number), vbCritical + vbAbortRetryIgnore, "Error Number" + Str(Err.Number))
方法2:
把整个文本框的内容一个字符一个字符地写入文件。 Open "Myfile.dat" For Output As #1 For i=1 To len(myText1.Text) Print #1,Mid(myText1.Text,i,1); Next i Close #1
6.9 顺序文件读操作
相关文档
最新文档