[英]How to handle exceptions from C++ via SWIG to Java
另请参阅Swig 2.0文档中有关异常处理的特定于Java的部分 。
为了避免多次编写模式,我创建了一个SWIG宏,支持抛出一种类型的C ++异常的方法 - 通过捕获它并抛出相应的Java异常:
WRAP_THROW_EXCEPTION( myCppDeclaration, com::foo::MyCppExceptionClass,
"com.foo.MyException",
"com/foo/MyException" );
这是宏:
%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
因为我已经和我搏斗了(从我的个人资料中查看我的博客,它是关于python,SWIG,异常和导演,但应该有帮助)让我给你一些建议:
const char
指针,Java将具有垃圾收集它们的选项。 这对所有项目都是如此,但它是一个容易被忽视的项目,我已经完成了它,已经看过几次了。 之后,请不要阅读1.1。 使用2.0或1.3中的文档。 它更清楚了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.