ehxz 发表于 2010-8-16 11:29:38

PB公用错误捕获模块的开发

作者: 郭宝利
在一个应用程序中,不管什么时候发生错误,都能够触发Application对象的SystemError事件(个别的,数据窗口的DBError、 ItemError事件不会触发SystemError,以后再讨论),在该事件中能够处理全局对象Error的消息,以便用户清楚错误的情况,并且还有 机会继续执行程序,否则整个应用可能就会关闭了。
程序设想思路很简单,只需在Application对象的SystemError事件中打开一个公用的错误处理窗口就能够了。错误处理窗口显示错误消 息,并且提供‘继续’还是‘中断’的选择。能够设想一个External类型的数据窗口,用来显示这些错误消息。这里提供的程序比较实用的一点是,将PB 所有能够被SystemError捕获的错误都翻译成了汉语,这点我相信比较受中国用户的欢迎,读者能够拿来间接使用。错误消息显示窗口的程序如下:

String ls_ErrMsg

Choose Case error.number
Case 1
ls_ErrMsg = "被零除"
Case 2
ls_ErrMsg = "引用空对象"
Case 3
ls_ErrMsg = "数组越界"
Case 4
ls_ErrMsg = "枚举值超出函数范畴"
Case 5
ls_ErrMsg = "函数中遇到负值"
Case 6
ls_ErrMsg = "指定的数据窗口行/列无效"
Case 7
ls_ErrMsg = "连接引用时,出现不可处理的外部引用"
Case 8
ls_ErrMsg = "引用带有空下标的数组"
Case 9
ls_ErrMsg = "DLL函数未在当前程序中"
Case 10
来源:www.va1314.com/bc
ls_ErrMsg = "DLL函数不支持的参数类型"
Case 11
ls_ErrMsg = "对象文件已过期,必须转化为当前版本"
Case 12
ls_ErrMsg = "数据窗口列类型与GetItem类型不婚配"
Case 13
ls_ErrMsg = "不可知的属性引用"
Case 14
ls_ErrMsg = "为外部函数打开错误DLL库"
Case 15
ls_ErrMsg = "错误调用外部函数"
Case 16
ls_ErrMsg = "超出最大字符串的长度"
Case 17
ls_ErrMsg = "数据窗口控件中引用的数据窗口对象不具有"
Case 18
ls_ErrMsg = "函数未前往值"
Case 19
ls_ErrMsg = "不能将任意变量中NAME转化为NAME"
Case 20
ls_ErrMsg = "没有成功地准备好数据库命令"
Case 21
ls_ErrMsg = "运行时,不正确地引用函数"
Case 22
ls_ErrMsg = "不可知的对象类型"
Case 23
ls_ErrMsg = "不能将NAME类型的对象赋值为NAME类型的对象"
Case 24
ls_ErrMsg = "函数调用与其定义不婚配"
Case 25
ls_ErrMsg = "DOUBLE或REAL表达式溢出"
Case 26
ls_ErrMsg = "不支持对NAME字段的赋值"
Case 27
ls_ErrMsg = "非整型指数不能为负"
Case 28
ls_ErrMsg = "VBX错误:NAME"
Case 29
ls_ErrMsg = "ANY变量需要非整组值"
Case 30
ls_ErrMsg = "外部对象不支持数据类型:NAME"
Case 31
ls_ErrMsg = "不支持外部对象数据类型:NAME"
Case 32
ls_ErrMsg = "调用外部对象函数NAME时,未找到名字"
Case 33
ls_ErrMsg = "调用外部对象函数NAME时,参数类型不合法"
Case 34
ls_ErrMsg = "调用外部对象函数NAME时,使用不正确的参数数目"
Case 35
ls_ErrMsg = "错误调用外部对象函数NAME"
Case 36
ls_ErrMsg = "访问外部对象属性NAME时,未找到名称"
Case 37
ls_ErrMsg = "访问外部对象属性NAME时,类型不婚配"
Case 38
ls_ErrMsg = "询问外部对象属性NAME时,下标数目不正确"
Case 39
ls_ErrMsg = "错误访问外部对象属性NAME"
Case 40
ls_ErrMsg = "与表达式中任意数据类型不婚配"
Case 41
ls_ErrMsg = "表达式中有不合法的任意数据类型"
Case 42
ls_ErrMsg = "在DLL函数NAME中,运行时所指定的参数类型与所要求的参数类型不相同"
Case 43
ls_ErrMsg = "父对象不具有"
Case 44
ls_ErrMsg = "先人的函数中具有发生冲突的参数及前往类型"
Case 45
ls_ErrMsg = "外部表溢出"
Case 46
ls_ErrMsg = "空的对象引用不能被赋值或传送给同类型的变量"
Case 47
ls_ErrMsg = "变量需要数组值"
Case 48
ls_ErrMsg = "数组的大小与对象的转换不婚配"
Case 49
ls_ErrMsg = "数组的类型与对象的转换不婚配"
Case 50
ls_ErrMsg = "分布服务错误"
Case 51
ls_ErrMsg = "函数或事件的参数不合法"
Case 52
ls_ErrMsg = "分布通讯错误"
Case 53
ls_ErrMsg = "未激活所需服务器"
Case 54
ls_ErrMsg = "服务器未接受请求"
Case 55
ls_ErrMsg = "请求非正常终止"
Case 56
ls_ErrMsg = "非完整地相应请求"
Case 57
ls_ErrMsg = "未连接"
Case 58
ls_ErrMsg = "对象实例不具有"
Case 59
ls_ErrMsg = "不合法的列范畴"
Case 60
ls_ErrMsg = "不合法的行范畴"
Case 61
ls_ErrMsg = "将NUMBER维数组不合法地转换成对象"
Case 62
ls_ErrMsg = "服务器忙"
Case 63
ls_ErrMsg = "无前往值的函数或事件用于表达式"
Case 64
ls_ErrMsg = "赋值需要数组对象"
Case Else
ls_ErrMsg = "其他错误"
End Choose

dw_error.insertrow (0)
dw_error.setitem (1,"errornum",string(error.number))
dw_error.setitem (1,"message" ,ls_ErrMsg)
dw_error.setitem (1,"where"   ,error.windowmenu)
dw_error.setitem (1,"object",error.object)
dw_error.setitem (1,"event"   ,error.objectevent)
dw_error.setitem (1,"line"    ,string(error.line))

sunchengbo2007 发表于 2011-6-20 21:28:17

学习了,谢谢斑竹分享~~~
页: [1]
查看完整版本: PB公用错误捕获模块的开发

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com