【问题标题】:How to manage exceptions sent from dlls in C++如何在 C++ 中管理从 dll 发送的异常
【发布时间】:2016-06-02 09:43:04
【问题描述】:

我已经读过一些问题,从 dll(或 .so)抛出异常并从可执行文件中捕获它并不容易或不可能。 我有一个爱好项目,其中 exe 充当库,即是客户端 dll 的“功能提供者”,或多或少是这样的结构:

ExeProgram::method1() -> Dll::method2() -> ExeProgram::method3() [-> Dll::method4()]

所以,我的问题是:如何设计一个好的执行设计来实现: - dll 可能会抛出异常。 - 异常捕获应该在 ExeProgram 中。

C++11有没有办法实现这个设计?

【问题讨论】:

    标签: c++ c++11 dll exception-handling


    【解决方案1】:
    1. 通过错误代码使 DLL 报告错误。
    2. 制作一个处理 DLL 加载并为其提供简单接口的客户端包装器。
    3. 使该包装器将错误代码转换为异常。

    【讨论】:

    • 我认为这是唯一的选择,但我想完全避免错误代码。我正在考虑类似重新抛出异常的事情,但我认为这是不可能的。
    • 错误代码?从 90 年代初到 2016 年,你是如何做到时间旅行的?
    • @ExcessPhase 如果您对如何避免将 DLL 锁定为仅在以特定语言编写的程序中可用以及在您决定单独更新 dll/程序时避免潜在的二进制兼容性问题有任何建议,随意告诉。一般letting exception escape module boundarybad idea。你为什么关心它是否在内部使用错误代码?用户只会看到在发生错误时发出异常的 API。
    猜你喜欢
    • 1970-01-01
    • 2021-03-28
    • 2011-02-20
    • 2011-05-12
    • 2012-12-03
    • 1970-01-01
    • 2020-04-07
    • 2011-05-26
    • 1970-01-01
    相关资源
    最近更新 更多