我正在为C ++库编写Swig-Python包装器。当发生严重错误时,库会调用exit(err);
,这会终止执行该库中函数的整个python脚本。
有没有办法绕过exit()
函数返回脚本或抛出异常?
答案 0 :(得分:0)
如果没有更多信息,很难提供解决方案,但是:
你写过这个图书馆吗?如果是这样,你可以重做它来抛出logic_error
而不是打电话给exit
吗?
如果库正在调用exit
,这意味着完全是灾难性的失败。库的内部状态很可能是不一致的(你应该假设它是!) - 你确定要在此之后继续这个过程吗?如果你没有写图书馆,你就无法对此进行推理。如果你这样做,请参见上文。
也许您可以围绕库编写一个包装器进程,并在整个进程边界上编组调用?执行速度较慢,编写和维护更加痛苦,但它允许父进程(python)检测子进程的终止(库包装器)。