您现在的位置:首页 >> 基础算法 >> window基础 >> 内容

RemObjects中不能屏蔽的异常

时间:2011/9/3 15:32:57 点击:

  核心提示:我起初不是很相信,自己用Delphi也有好段时间了,从来没碰上过此等RP的事情 -_- 结果远程调试了一下,发现还真是这样。接着又把程序拿到了自己的机器上调试,问题依旧。想来想去不知道何解,还以为fi...
我起初不是很相信,自己用Delphi也有好段时间了,从来没碰上过此等RP的事情 -_- 结果远程调试了一下,发现还真是这样。接着又把程序拿到了自己的机器上调试,问题依旧。想来想去不知道何解,还以为finally里面的语句又出了新的异常,不过既然except能屏蔽掉,就肯定不会是这个问题。    直到今天用RemObjects做东西的时候,我调用了uROXmlSerializer单元里的XmlToObject函数,准备把一段Xml反序列化成一个对象。碰巧那段Xml有错误,不符合反序列化的条件,报错。我用的是finally屏蔽异常,结果没屏蔽掉,于是猛地想起了上文所说的事情。跟踪进RemObjects的代码,发现报异常的时候,异常类是EROException。然则这个类有什么特别呢?答案就是多了个{$M+}编译符,因为RemObjects框架要让这个异常类具有RTTI能力,以便将其序列化并发送到客户端。想到这,我立刻单独做了个试验,从Exception继承了个异常类,并给它加上了{$M+},结果果然不能用finally屏蔽。至此谜底解开,但是为什么这样,我就无法再深究了,毕竟异常例程的处理,是IDE接管的。

作者:harryfin 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 盒子文章(www.2ccc.com) © 2024 版权所有 All Rights Reserved.
  • 沪ICP备05001939号