JNA 调用C++的DLL时,如果DLL中抛出异常,则整个JVM进程会退出?

作者站长头像
站长
· 阅读数 16

有什么办法可以包裹住异常而不让JVM退出?这是Java调用代码:JNA 调用C++的DLL时,如果DLL中抛出异常,则整个JVM进程会退出?可以看到,26行报错过后直接就停止了运行,JVM被退出,类似exit(3)。这是C++报错的代码:

DLLIMPORT double fuc(double x, double y)  
{
if(0==0)
{
     throw y;                                 
}
     return x/y;                                   
}

如果调用DLL不是在主线程,仍然JVM会被退出,这是我最大的疑惑点:JNA 调用C++的DLL时,如果DLL中抛出异常,则整个JVM进程会退出?

回复
1个回答
avatar
test
2024-07-18

应该只能在 C++ 里面 catch 住。抛到 java 里好像就没办法了。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容