Ste*_*end 7 c++ java java-native-interface swig exception-handling
我们正在实现一个C++代码包装器,以便接触Java客户端.我已经看过关于异常处理的SWIG文档,但这在三层(C++/SWIG/Java)中的编码术语中有什么意义呢?
如果有人有工作实例或建议,我将不胜感激.
另请参阅Swig 2.0文档中有关异常处理的特定于Java的部分.
为了避免多次编写模式,我创建了一个SWIG宏,支持抛出一种类型的C++异常的方法 - 通过捕获它并抛出相应的Java异常:
WRAP_THROW_EXCEPTION( myCppDeclaration, com::foo::MyCppExceptionClass,
"com.foo.MyException",
"com/foo/MyException" );
Run Code Online (Sandbox Code Playgroud)
这是宏:
%define WRAP_THROW_EXCEPTION( MATCH, CPPTYPE, JTYPE, JNITYPE )
%javaexception(JTYPE) MATCH {
try {
$action
}
catch ( CPPTYPE & e ) {
jclass eclass = jenv->FindClass(JNITYPE);
if ( eclass ) {
jenv->ThrowNew( eclass, e.what() );
}
}
}
%enddef
Run Code Online (Sandbox Code Playgroud)
由于我一直在努力解决这个问题(请从我的个人资料中查看我的博客,它是关于 python、SWIG、例外和董事的内容,但应该会有所帮助),让我给您一些建议:
const char指针,Java 将可以选择对它们进行垃圾收集。所有项目都是如此,但它是一个很容易被忽视的项目,我已经做过并且已经看到它做过几次了。之后就不要再读1.1了。使用 2.0 或 1.3 中的文档。这更清楚了。
| 归档时间: |
|
| 查看次数: |
2807 次 |
| 最近记录: |