VBA错误处理(十八)
在(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
VBA错误处理(十八)的更多相关文章
- SQL注入之Sqli-labs系列第十八关(基于错误的用户代理,头部POST注入)
开始挑战第十八关(Header Injection - Uagent field - Error based) 常见的HTTP注入点产生位置为[Referer].[X-Forwarded-For].[ ...
- Excel VBA入门(十)用户窗体开发
VBA 中的用户窗体就是指带 UI 的用户界面,在运行的时候会单独弹出一个窗口,类似于在 windows 系统中运行的一个可执行程序一样(这个说法不太严谨,因为可执行程序也可能是只有命令窗口而没有 U ...
- 最全的MySQL基础【燕十八传世】
1.课前准备! 开启mysql服务:1).配置环境变量;2).net start mysql 将该sql文件导入到你的数据库中,以下所有操作都是基于该数据库表操作的!!! [此笔记是本人看着视频加上自 ...
- NeHe OpenGL教程 第四十八课:轨迹球
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- 学好C++必须要注意的十八个问题
转自 http://blog.chinaunix.net/uid-7396260-id-2056691.html 一.#include "filename.h"和#i nclud ...
- NeHe OpenGL教程 第三十八课:资源文件
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化
原文:WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化 [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制 ...
- VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器
VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器 View 传输服务器用于管理和简化数据中心与在最终用户本地系统上检出使用的 View 桌面之间的数据传输.必须安 ...
- 【OpenCV新手教程之十八】OpenCV仿射变换 & SURF特征点描写叙述合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨) ...
随机推荐
- Java基础 switch 表达式为字符串
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- Java基础 Scanner 使用nextInt接收整数
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- leetcode 290. Word Pattern 、lintcode 829. Word Pattern II
290. Word Pattern istringstream 是将字符串变成字符串迭代器一样,将字符串流在依次拿出,比较好的是,它不会将空格作为流,这样就实现了字符串的空格切割. C++引入了ost ...
- zookeeper在windows的常用命令
首先简要讲下安装 安装jdk 安装Zookeeper. 在官网http://zookeeper.apache.org/下载zookeeper.我下载的是zookeeper-3.4.6版本. 解压zoo ...
- Spring MVC入门的实例
作为Spring MVC入门,以XML配置的方式为例.首先需要配置Web工程的web.xml文件. 代码清单14-1:web.xml配置Spring MVC <?xml version=&q ...
- Jackson解析自定义json到实体类
json文本 { "status": 0, "result": { "final": true, "hypotheses" ...
- IIS7(Windows7)下最简单最强安装多版本PHP支持环境
最近调试程序,要在PHP5.2和5.3之间换来换去,而习惯了windows下的开发,就琢磨怎么在iis下安装多版本支持,赫然发现其实微软都为我们准备了好工具. 微软对PHP的支持越来越强,这点在IIS ...
- 关于Js异常
一.Javascript的异常处理机制 当javascript代码中出现错误的时候,js引擎就会根据js的调用栈逐级寻找对应的catch,如果没有找到相应的catch handler或catch ha ...
- Java进阶教程:使用Lombok提升开发效率
Java进阶教程:使用Lombok提升开发效率 Lombok Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO).它通过注释实现这 ...
- Charles 手机抓包HTTPS设置以及证书安装
本文参考:charles 抓包手机 charles经常会进行手机上的网页抓包,比如去copy别人网站图片或脚本的时候o(∩_∩)o : 手机抓包的原理,和PC类似,手机依靠charles与服务端进行对 ...