我们正在实现C代码的包装器以接触
Java客户端.我已经看过
SWIG documents about exception handling,但这在三层(C / SWIG / Java)的编码术语中有什么意义呢?
如果有人有工作实例或建议,我将不胜感激.
解决方法
因为我已经和我搏斗了(从我的个人资料中查看我的博客,它是关于python,SWIG,异常和导演但应该有帮助)让我给你一些建议:
>不要将C异常发送到Java堆栈.它会使你的应用程序崩溃.确保它们都以正确的方式包裹.我知道你在问这个问题,但是你必须明白这一点.一个错过的例外就可以解决这个问题.
>不要尝试将Java异常传递到C堆栈,它们会转换为SWIGDirectorExceptions或SWIGMethodExceptions.这是一个真正的痛苦,因为您丢失了Java异常的类型信息.相反,如果你不是在处理一个控制器,那么创建一个C类,除了引发C异常之外什么也不做,这样你就可以在C堆栈中传播C异常.
>在std :: string中包装从Java传递给C的所有裸字符串.如果将它们保存为const char指针,Java将具有垃圾收集它们的选项.所有项目都是如此,但它是一个容易被忽视的项目,我已经完成了它并且已经看过几次了.
之后,请不要阅读1.1.使用2.0或1.3中的文档.它更清楚了.