【发布时间】:2010-04-27 19:28:45
【问题描述】:
我有几十个通过 COM 接口公开的对象,每个对象都有很多方法,总共有几百个方法。这些接口将业务对象从我的应用程序暴露给脚本引擎。
我的任务是保护这些方法中的每一个不被抛出异常(捕获它们并使用 COM 的 Error() 函数返回错误,顺便说一下,我找不到任何文档,因为它不可能通过谷歌搜索) .据我了解,这需要我在每个方法的核心周围添加一个 try/catch。对于这数百种方法中的每一种,catch 块都将是相似或相同的,这强烈地嗅到了问题的味道(严重违反了 DRY 原则),但我想不出任何方法来避免更改每种方法。据我所知,这些方法是由 COM 直接调用的,没有可以用来捕获异常的干预代码。我目前最好的想法是为 catch 块制作一个宏,但这有它自己的代码味道。谁能想出更好的方法?
顺便说一句,我的应用程序的异常不是从 std::exception 派生的,所以如果 COM 有某种方式自动处理标准异常,那将无济于事。遗憾的是,我无法将现有异常更改为从 std::exception 派生。
【问题讨论】:
标签: c++ exception com exception-handling