VBA错误处理(十八)
2024-08-26 23:11:38
在(VBScript/VBA)编程中有三种类型的错误:
- 语法错误
- 运行时错误
- 逻辑错误
语法错误
语法错误(也称为解析错误)发生在VBScript的解释时间。 例如,下面一行导致语法错误,因为它缺少一个右括号。
Function ErrorHanlding_Demo()
dim x,y
x = "Yiibai Yiibai"
y = Ucase(x
End Function
运行时错误
运行时错误(也称为异常)在执行期间发生,在解释之后。
例如,下面的行会导致运行时错误,因为这里的语法是正确的,但是在运行时它正在尝试调用fnmultiply
,但这是一个不存在的函数。
Function ErrorHanlding_Demo1()
Dim x,y
x =
y =
z = fnadd(x,y)
a = fnmultiply(x,y)
End Function Function fnadd(x,y)
fnadd = x + y
End Function
逻辑错误
逻辑错误可能是最难追查的错误类型。这些错误不是语法或运行时错误的结果。 相反,当您在驱动脚本的逻辑中犯了一个错误,并且没有得到预期的结果时,就会发生这种情况。
你可能无法捕捉到这些错误,因为这取决于业务需求,在程序中加入什么类型的逻辑。
例如,将一个数字除以零,或写入一个进入无限循环的脚本。
Error对象
假设我们有一个运行时错误,那么通过显示错误信息来停止执行。作为开发人员,如果想捕获错误,那么使用Error
对象。
例子
在下面的例子中,Err.Number
给出错误号,Err.Description
给出错误描述。
Err.Raise ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear ' Clear the error.
错误处理
VBA启用错误处理例程,也可以用来禁用错误处理例程。没有On Error
语句,发生的任何运行时错误都是致命的:显示错误消息,并且执行突然停止。
On Error { GoTo [ line | | - ] | Resume Next }
编号 | 关键字 | 描述 |
---|---|---|
1 | GoTo line | 启用在所需的行参数中指定的行开始的错误处理例程。指定的行必须与On Error 语句在相同的过程中,否则将发生编译时错误。 |
2 | GoTo 0 | 禁用当前过程中启用的错误处理程序并将其重置为Nothing 。 |
3 | GoTo -1 | 禁用当前过程中启用的异常并将其重置为Nothing 。 |
4 | Resume Next | 指定发生运行时错误时,控制权转到发生错误的语句之后的语句,并从该点继续执行。 |
例子
Public Sub OnErrorDemo()
On Error GoTo ErrorHandler ' Enable error-handling routine.
Dim x, y, z As Integer
x =
y =
z = x / y ' Divide by ZERO Error Raises ErrorHandler: ' Error-handling routine.
Select Case Err.Number ' Evaluate error number.
Case ' Divide by zero error
MsgBox ("You attempted to divide by zero!")
Case Else
MsgBox "UNKNOWN ERROR - Error# " & Err.Number & " : " & Err.Description
End Select
Resume Next
End Sub
最新文章
- iOS CocoaPods 版本安装问题
- HDFS 架构解析
- Response.End()出现ThreadAbortException 异常
- Redis小结
- Exception在方法继承中的限制
- linux平台下防火墙iptables原理(转)
- 09 高效的PL/SQL程序设计
- 让ie678支持css一些属性及html标签
- UITableview 中获取非选中的cell
- Uri、UriMatcher、ContentUris详解
- xcode4的workspace里各lib工程与app工程联编之runscript简介
- android:Adb connection Error:远程主机强迫关闭了一个现有的连接
- Ecstore 2.0 报表显示空白
- 深度学习系列之CNN核心内容
- 兜转数年,老跳成了卖过软件开过店写过APP的电脑老师
- (转载)Windows 上搭建Apache FtpServer
- Redis基础、应用、第三方支持组件总结
- ubuntu16.04 npm安装
- CentOS 7源码安装zabbix
- javascript简单的选项卡
热门文章
- [转]eclipse常用设置
- Ubuntu配置国内高速apt-get更新源
- JQuery中formSerialize()报错:对象不支持";formSerialize";属性或方法
- Python“文件操作”Excel篇(上)
- jsp、freemarker、velocity、thymeleaf
- 123457123456#2#----com.MC.HuiHuaGame33--前拼后广--画画填色Game-mc
- elasticsearch关键词查询不分词
- SQL Server数据同步到Oracle
- CF1197D Yet Another Subarray Problem
- CF1223D Sequence Sorting