gpt4 book ai didi

java - 如何通过 SWIG 处理从 C++ 到 Java 的异常

转载 作者:可可西里 更新时间:2023-11-01 18:26:00 26 4
gpt4 key购买 nike

我们正在 C++ 代码上实现一个包装器以暴露给 Java 客户端。我看过 SWIG documents about exception handling但这在三层(C++/SWIG/Java)的编码术语中意味着什么?

如果有人有工作示例或建议,我将不胜感激。

最佳答案

另请参阅 Swig 2.0 文档中的 Java-specific section on exception handling .

为了避免多次编写该模式,我创建了一个 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

关于java - 如何通过 SWIG 处理从 C++ 到 Java 的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3808778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com