EASERVER的高手们,请帮忙,涉及到饭碗的问题

2000pinbo 2002-06-12 11:18:57
大家好,请教一个问题,关于ESA的。
如何在客户端得到服务器端组件内部具体的错误,比如数据窗口由于后台表字段大小改变造成数据库更新错误。
为了传出组件内部错误,我采取的方法的就是使用用户定义异常,
一般性错误(没有涉及数据库回滚操作的),可以靠抛出用户异常,在客户端捕获来得到。
但是对于setabort()等回滚事务的方法会首先引发rollback系统异常,造成了无法破获n_exception的异常,这时应该怎么办?

或者大家有其他的方法可以做到这一点,盼答复

十万火急,求救!
...全文
52 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinalht 2002-06-12
  • 打赏
  • 举报
回复
设置 EAServer中的 tx_outcome 属性改为 failed 试试
junjie79 2002-06-12
  • 打赏
  • 举报
回复
高手们,可以介绍几本PB + EAServer开发的书吗?
fibbery 2002-06-12
  • 打赏
  • 举报
回复
将每个组件的属性com.sybase.jaguar.component.tx_outcome值
由Failed
改成always,
然后,在试一下!
2000pinbo 2002-06-12
  • 打赏
  • 举报
回复
感谢你的回答。
SETABORT()后,我能抓到异常corbatransactionrolledback,但是抓不到我自己的异常n_exception,所以得不到我写的错误消息。
我的问题就是,如何在这种情况下,将我写的详细的组件内部错误发到客户端显示出来。

举例:
我的后台表有一个字段为not null,
此时,我在服务器端写的代码中,没有检查是否为空,
如下写
IF ids_data.Update() = 1 THEN
its_jag.SetComplete()
ELSE
its_jag.disablecommit()
//its_jag.setabort()
of_setmessage("服务器端错误~r~n~t更新(update) "+as_dataobject+"调用失败!"+ "~r~n"+ids_data.of_geterror())
THROW in_exception
END IF
此时如果执行到else内,抛出的异常不是n_exception,而是jaguar服务器内部的systemexception(我的理解),rollback异常,这时,在客户端抓不到n_exception异常,没有办法抓到我通过of_setmessage写的那些错误。
fibbery 2002-06-12
  • 打赏
  • 举报
回复
在你SETABORT()后抛出异常有什么不妥吗?
怎会捕获不到?
ghost_old 2002-06-12
  • 打赏
  • 举报
回复
做EAS server 的朋友早已没有饭碗了,赶快改行吧.
2000pinbo 2002-06-12
  • 打赏
  • 举报
回复
还是要谢的!!

现在我将结果向大家说明一下,
设为failed后,事务回滚了,我也能捕获到我的自定义异常了。
但是有个疑问,
我使用setabort()和disablecommit()都能捕获到我的异常,这和我以前的理解不同。
我原来理解 setabort() 标记事务要回滚 ,同时断开与客户端的连接。
disablecommit() 标记事务要回滚,但是可以继续向下执行。
也就是说,我在setabort()后利用of_setmessage()设置错误信息,抛出我自定义的异常,应该是执行不到的,看来我的理解有错误。

fibbery(飞) 能不能解释一下这几个语句的用法。
setcomplete(),setabort(),disablecommit(),enablecommit().

如果能说明一下,我可以重开贴子。




fibbery 2002-06-12
  • 打赏
  • 举报
回复
SORRY,别谢我了,一时疏忽,说反了,应该改成failed!
呵呵...
2000pinbo 2002-06-12
  • 打赏
  • 举报
回复
我查了jaguar manager的帮助,com.sybase.jaguar.component.tx_outcome决定是否向客户端send rollback这个异常,设为failed,可以不send.
这样就可以返回客户端一个值。
不知道可不可以解决我的问题。

谢谢 fibbery(飞)
谢谢 chinalht(我在,故我思)


2000pinbo 2002-06-12
  • 打赏
  • 举报
回复
我试一试再说,
我想说的和junjie79(笨笨虫) 一样,
大家的esa这么熟,主要通过什么学习途径达到的。
我觉得这方面的书籍太少了,由于以前的技术面窄,搞这个东西困难太大。
fibbery(飞) 和 chinalht(我在,故我思) 能不能提一些建议。

1,078

社区成员

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

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