急啊!有请PB高手--如何截获程序错误?

DOU 2000-02-28 09:57:00
公司用pb为客户开发一系统,客户测试要求很高,现遇到一问题,求教于各位高手。

环境:WinNT4.0+sp5 WorkStation,PowerBuilder6.5

在 - Button Click 事件中调用远程Oralce的一存储过程,如果在click之前或之中将网线断开,NT 弹出一错误框,说‘ 有一错误发生在pb6.exe', 然后终止powerbuiler。按理说此时应有一错误被PowerBuilder 捕获,然后由程序处理,我如何才能Trap住PB的此类错误呢?
Thanks in advance!
...全文
200 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostlee 2000-03-01
  • 打赏
  • 举报
回复
如果问题出在网络层怎么办?
radish 2000-02-28
  • 打赏
  • 举报
回复
先检测连接是否正常,SQLCA.SQLCODE 及SQLCA.SQLDBCODE也应在每次执行SQL时检查
929 2000-02-28
  • 打赏
  • 举报
回复
不知能否解决问题,在PB中提供了一个事件来捕获系统中引用外部对象出错这样的错误。它是SYSTEMERROR事件,在这个事件中可对系统发生的一些严重事件进行处理。另外,如果想保证与数据库连接正常,我想常常测试一下SQLCA.SQLCODE是有必要的。
losed 2000-02-28
  • 打赏
  • 举报
回复
加一层类似中间件的东西试试
radish 2000-02-28
  • 打赏
  • 举报
回复
tray check sqlca.connected
DOU 2000-02-28
  • 打赏
  • 举报
回复
谢谢两位!
根据两位指导又试了试,发现执行select语句,网络断开时,是可以从sqlca.sqlcode判断是否出错的,而在执行存贮过程时,若网络断开,这条语句执行不下去,操作系统直接报出system illegal operation 错误。SYSTEMERROR事件没有触发,也无法检查SQLCA.SQLCODE。

暂时采取了类似radish的方法,先执行一无用的select语句,用以检测连接是否正常
若正常再执行存贮过程,类似下面代码:

select sysdate into :systate from dual;
if sqlca.sqlcode<>0 then
messagebox("Error","some err msg")
return
end if

execute sp_verify_pin;

if sqlca.sqlcode<>0 then
messagebox("Error","another err msg")
end if

此法可避免绝大部分此类错误,只是感觉,解决方法不彻底,不知是否还有更好的方法?

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧