【发布时间】:2010-10-25 05:45:31
【问题描述】:
我正在为一些用 C++ 编写的功能开发一个 C api,我想确保不会从任何导出的 C 函数中传播异常。
简单的方法是确保每个导出的函数都包含在:
try {
// Do the actual code
} catch (...) {
return ERROR_UNHANDLED_EXCEPTION;
}
假设我知道 C++ 代码中经常遗漏的一个异常是 std::bad_alloc,我想特别对待它,我会写这样的东西:
try {
// Run the actual code
} catch (std::bad_alloc& e) {
return ERROR_BAD_ALLOC;
} catch (...) {
return ERROR_UNHANDLED_EXCEPTION;
}
是否有可能以某种巧妙的方式对其进行分解,以便在不为每个导出函数周围的异常处理程序添加新的 catch 语句的情况下全局不同地处理某些错误?
我知道这可以使用预处理器来解决,但在走这条路之前,我会确保没有其他方法可以做到这一点。
【问题讨论】:
标签: c++ c exception-handling