2011-06-13 39 views
2

我们正在为C++ MFC应用程序开发插件dll。在我们的插件函数中,如果它们不能满足其发布条件,就会抛出异常。通常情况下,异常会被较高的上下文所捕获,但有时它们会传播到事件处理程序和应用程序崩溃。所以,我正在写每个事件处理程序的try/catch块,以避免应用程序崩溃并显示发生意外错误的信息消息。我在想如果有办法跳过这个。也许用set_unexpected函数设置全局意外处理程序,但这又不可靠,像第三方库等其他人可以覆盖我的异常处理程序。任何人都有一些建议C++插件应用程序的异常处理方案

回答

1

当跨越“单元”边界(如C-C++接口或共享对象边界)时,需要以接口两侧都可以识别的方式捕获和传播异常。不幸的是,你发现时没有简单的方法来做到这一点。

+1

返回错误值(类似于COM如何处理它)的工作相对较好。你只要确保处理可能抛出的函数中的异常,并且所有信息都会返回(甚至可以从捕获的异常中复制必要的信息并传递它)。 – ssube 2011-06-13 15:31:51