Как поймать исключение sdbus :: Error в с ++? - PullRequest
0 голосов
/ 03 августа 2020

Я новичок в C ++. Я пытаюсь обработать некоторые ошибки, которые могут возникнуть в моем приложении java с помощью jni. Это мой блок 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 вызывается после создания экземпляра 'sdbus :: Error'

и некоторого другого текста. Также приложение остановилось. Насколько я понимаю, в блоке catch я могу отловить любую ошибку, но этого не происходит. Зачем? А как отловить любую ошибку?

1 Ответ

0 голосов
/ 04 августа 2020

Наконец, я написал решение. Спасибо за ответы.

     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;
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...