我有一个 C++ 应用程序调用SQLite http://www.sqlite.org/的(SQLite 使用 C 语言)sqlite3_exec() http://www.sqlite.org/c3ref/exec.html它又可以调用我用 C++ 实现的回调函数。 SQLite 被编译成静态库。
如果异常逃脱了我的回调,它是否会通过 SQLite 的 C 代码安全地传播到调用 sqlite3_exec() 的 C++ 代码?
我的猜测是,这取决于编译器。然而,在回调中抛出异常将是一个非常糟糕的主意。要么它完全不起作用,要么 SQLite 库中的 C 代码将无法处理它。考虑一下这是否是 SQLite 中的一些代码:
{
char * p = malloc( 1000 );
...
call_the_callback(); // might throw an exception
...
free( p );
}
如果异常“有效”,C 代码就无法捕获它,并且 p 将永远不会被释放。当然,图书馆可能分配的任何其他资源也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)