有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何捕获SDBUS:C++中的错误异常?

我是C++新手。我试图用jni处理java应用程序中可能出现的一些错误。这是我的try/catch块:

   std::future<lib::LibVector> libVectorFuture;
      
            try {
              libVectorFuture = some::lib::getVector(param1, param2);
          } catch (...) {
              // report problem back to Java.
              jclass Exception = env->FindClass("com/my/MyClientException");
              env->ThrowNew(Exception, "Unable to get result from native getVector(String p1, String p2) method!");
          }

lib::LibVector vector = libVectorFuture.get();

// here I'm using vector

当我使用有效的参数(param1,param2)时,它工作。但当我使用无效参数时,我会得到错误:

terminate called after throwing an instance of 'sdbus::Error'

和其他一些文本。此外,应用程序已停止。正如我在catch块中所理解的,我可以捕获任何错误,但它不会发生。为什么?如何捕捉任何错误


共 (1) 个答案

  1. # 1 楼答案

    最后,我写了一个解决方案。谢谢你的回复

         std::future<lib::LibVector> libVectorFuture;
      
            try {
              libVectorFuture = some::lib::getVector(param1, param2);
              lib::LibVector vector = libVectorFuture.get(); // here I get error
          } catch (...) {
              // report problem back to Java.
              jclass Exception = env->FindClass("com/my/MyClientException");
              env->ThrowNew(Exception, "Unable to get result from native getVector(String p1, String p2) method!");
           return nullptr;
          }