曾经遇到过一个问题,在错误处理中使用Debug.Print打出来的err.Number居然是0(当然,在这段错误处理的代码之前已经加了Exit Sub)。如下:
Set clientCs=nothing '调用中间层的对象被释放
Set Rs=nothing '客户端记录集被释放
debug.print err.Number
后来我把两个变量清空的语句放到debug的下面就返回了正确的出错信息。有点不明白,难道说把中间层对象或记录集清空的同时也会清空Err对象吗?究竟在什么条件下Err会被清空呢?
Set clientCs=nothing '调用中间层的对象被释放
Set Rs=nothing '客户端记录集被释放
debug.print err.Number
后来我把两个变量清空的语句放到debug的下面就返回了正确的出错信息。有点不明白,难道说把中间层对象或记录集清空的同时也会清空Err对象吗?究竟在什么条件下Err会被清空呢?
解决方案 »
- 这段代码哪里不对?
- 单据打印机和非单据打印机在写程序上用Printer对象是否有的分别?
- 怎么能将3位的数字转换成1位的字符
- 各位高手帮忙,关于datareport报表里分组的问题!!
- 在线等待:listview中report方式显示时,怎么实现鼠标拖动一个项目从而改变排列顺序?
- 急!急!在怎样动态更新报表数据
- 谁知道VB程序能反编译吗
- 小弟今年大一,刚学VB,编了个软件,请高手过目!!!!散分!!!!!!
- 为什么在我的程序中使用了一个控件,在某些计算机上无法运行,老提示某某控件未注册。还有在编译时,这个控件文件是不是被加入了可执行文
- 哪儿有vbsp6和有mdac_typ2.7中文版下载?
- 图形中的文字问题
- 请大家帮忙
The Err object's properties are reset to zero or zero-length strings ("") after an Exit Sub, Exit Function, Exit Property or Resume Next statement within an error-handling routine
含有关于运行时错误的信息。说明
Err 对象的属性由错误的生成者来设置,这个生成者或者是 Visual Basic,或者是对象,或者是程序设计员。Err 对象的缺省属性是 Number。因为该缺省属性可以用对象名称 Err 表示,所以不必修改以前用 Err 函数或 Err 语句书写的代码。当运行时错误发生时,Err 对象的属性被填入明确识别错误的信息以及处理这个错误所使用的信息。为了在代码中生成运行时错误,请用 Raise 方法。在任意形式的 Resume 或 On Error 语句之后以及在错误处理子程序内的 Exit Sub、Exit Function、或 Exit Property 语句之后,将 Err 对象的属性重新设置为零或长度为零的字符串 ("")。可使用 Clear 方法重新明确设置 Err 。为了对系统错误和类模块生成运行时错误,要使用 Raise 方法而不使用 Error 语句。在其它代码中是否使用 Raise 方法,这要看想要返回的信息量有多大。Err 对象是具有全局范围的固有对象。在代码中没有必要建立这些对象的实例。
Set clientCs=nothing 时clientCs的Terminate事件被调用的情况?
你调用的子过程出错了在父过程中仍可以用Err.Number得到错误号
简单说:整个过程结束时错误号会自动清零,如果是调用子过程,则等到父过程完成,除非你在子过程或其他地方使用了Err.Clear。
set Rs=nothing '客户端记录集被释放
以上两句,应是原因。
在两个类的释构函数中,应该出现了On error goto , on error resume next 或 Resume "XXXX" 方法