Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SWIG将异常类型映射到java,仍然未捕获 我试图使用SWIG将一些C++代码封装到java中。代码一般都能正常工作,现在我正在处理错误。C++代码抛出了两种例外类型。我已经通过了所有的C++代码,并添加到函数标题中的抛出(…),并将其添加到我的SWIG。 %include "exception.i" %typemap(throws, throws="java.io.IOException") std::ios_base::failure { jclass excep = jenv->FindClass("java/io/IOException"); if (excep) jenv->ThrowNew(excep, $1.what()); return $null; } %typemap(javabase) std::ios_base::failure "java.lang.Exception"; %typemap(throws, throws="java.lang.IllegalArgumentException") std::invalid_argument { jclass excep = jenv->FindClass("java/lang/IllegalArgumentException"); if (excep) jenv->ThrowNew(excep, $1.what()); return $null; } %typemap(javabase) std::invalid_argument "java.lang.Exception";_Java_C++_Swig - Fatal编程技术网

使用SWIG将异常类型映射到java,仍然未捕获 我试图使用SWIG将一些C++代码封装到java中。代码一般都能正常工作,现在我正在处理错误。C++代码抛出了两种例外类型。我已经通过了所有的C++代码,并添加到函数标题中的抛出(…),并将其添加到我的SWIG。 %include "exception.i" %typemap(throws, throws="java.io.IOException") std::ios_base::failure { jclass excep = jenv->FindClass("java/io/IOException"); if (excep) jenv->ThrowNew(excep, $1.what()); return $null; } %typemap(javabase) std::ios_base::failure "java.lang.Exception"; %typemap(throws, throws="java.lang.IllegalArgumentException") std::invalid_argument { jclass excep = jenv->FindClass("java/lang/IllegalArgumentException"); if (excep) jenv->ThrowNew(excep, $1.what()); return $null; } %typemap(javabase) std::invalid_argument "java.lang.Exception";

使用SWIG将异常类型映射到java,仍然未捕获 我试图使用SWIG将一些C++代码封装到java中。代码一般都能正常工作,现在我正在处理错误。C++代码抛出了两种例外类型。我已经通过了所有的C++代码,并添加到函数标题中的抛出(…),并将其添加到我的SWIG。 %include "exception.i" %typemap(throws, throws="java.io.IOException") std::ios_base::failure { jclass excep = jenv->FindClass("java/io/IOException"); if (excep) jenv->ThrowNew(excep, $1.what()); return $null; } %typemap(javabase) std::ios_base::failure "java.lang.Exception"; %typemap(throws, throws="java.lang.IllegalArgumentException") std::invalid_argument { jclass excep = jenv->FindClass("java/lang/IllegalArgumentException"); if (excep) jenv->ThrowNew(excep, $1.what()); return $null; } %typemap(javabase) std::invalid_argument "java.lang.Exception";,java,c++,swig,Java,C++,Swig,当我查看生成的java文件时,它们似乎都正确地完成了,也就是说,应该在java中引发异常的函数是通过throws指定的。。。但是,当我运行代码并执行一个在C++端生成异常的命令时,它不会被包装器捕获,而我得到: libc++abi.dylib: terminate called throwing an exception Abort trap: 6 好吧,我知道了。当然是我的错。由于C++代码中的某些原因,我决定通过指针抛出异常,即“代码>抛出新的…。改变了这一点,现在它正在按预期工作

当我查看生成的java文件时,它们似乎都正确地完成了,也就是说,应该在java中引发异常的函数是通过throws指定的。。。但是,当我运行代码并执行一个在C++端生成异常的命令时,它不会被包装器捕获,而我得到:

libc++abi.dylib: terminate called throwing an exception
Abort trap: 6

好吧,我知道了。当然是我的错。由于C++代码中的某些原因,我决定通过指针抛出异常,即“代码>抛出新的…<代码>。改变了这一点,现在它正在按预期工作