我有一个C++应用程序调用SQLite(SQLite在C中)sqlite3_exec(),它反过来可以调用我在C++中实现的回调函数.SQLite被编译成静态库.
如果异常转义我的回调,它会通过SQLite的C代码安全地传播到调用sqlite3_exec()的C++代码吗?
我正在开发可供C或C++应用程序使用的C++组件DLL.暴露的dll功能如下
#include <tchar.h>
#ifdef IMPORT
#define DLL __declspec(dllimport)
#else
#define DLL __declspec(dllexport)
#endif
extern "C" {
DLL bool __cdecl Init();
DLL bool __cdecl Foo(const TCHAR*);
DLL bool __cdecl Release();
}
Run Code Online (Sandbox Code Playgroud)
这些函数的内部实现是没有公开的C++类,我假设使用这种风格,dll可以在C或C++应用程序中使用.问题是我没有处理任何类型的c ++异常(即bad_alloc),我将这些东西留给了调用者(更高层).经过与同事的多次辩论,我应该捕获所有异常并返回错误代码或至少是错误的,因为在C应用程序的情况下,它无法处理C++异常?真的吗?我一般应该做些什么?如果您正在开发将由其他系统使用的组件,是否有处理exeptions的经验法则.
我正在使用C++ JPEG库(libjpeg),我意识到当某些函数失败时,调用exit()并关闭应用程序.如何覆盖此行为并阻止应用程序关闭libjpeg错误?