我有几十个通过COM接口公开的对象,每个对象都有很多方法,总共有几百个方法。这些接口将业务对象从我的应用程序展示给脚本引擎。保护COM接口免受例外
我已经被赋予了保护这些方法中的每一个方法免受异常的任务(使用COM的Error()
函数来捕获它们并返回一个错误,顺便说一句,我找不到任何文档,因为这是不可能的)。就我的理解而言,这要求我在这些方法的每一个的内脏周围添加一个try/catch。对于这几百种方法中的每一种来说,catch块都是相似或相同的,这些方法强烈地感染了一个问题(大量违反了DRY原则),但我想不出任何方法来避免改变每种方法。据我所知,这些方法是由COM直接调用的,没有中间代码,我可以用它来捕获异常。我目前最好的想法是为catch块创建一个宏,但它有它自己的代码嗅觉。任何人都可以想出更好的方法吗?
顺便说一下,我的应用程序的异常不会从std :: exception中派生出来,所以如果有一些COM自动处理标准异常的方法,它将无济于事。而且我很遗憾不能改变现有的从std :: exception派生的异常。
看起来很有趣,但对于这个遗留系统,我认为这将是一个不可能的巨大工作量开始使用。如果我不幸设计出一个使用COM的新系统,我会记住它。 – rmeador 2010-04-27 19:40:00