Как создать объект QJSValue типа Error — выдает ошибки из QJSEngine

#javascript #c #qt #qt5 #qjsengine

#javascript #c #qt #qt5 #qjsengine

Вопрос:

В Qt кто-нибудь знает, как создать QJSValue типа Error?

Контекст: я использую QJSEngine::evaluate() для выполнения кода JavaScript, написанного пользователем в графическом интерфейсе, созданном с помощью QT. Этот код JavaScript вызывает функцию C . Согласно документации, QJSEngine::evaluate() выдает исключение сценария (QJSValue типа Error) только в том случае, если в коде JavaScript есть ошибка. Поэтому, если в функции C есть ошибка, мой подход заключается в возврате QJSValue типа error . Я следую по этому пути, потому что QJSEngine::evaluate не улавливает исключения C .

Здесь это фрагмент кода предполагаемой функциональности:

 void CMainWindow::slot_ExecuteJVScript()
{
   myCppClass myObject(parameters); //It has a foo() method.
   QJSEngine myEngine;
   myEngine.globalObject().setProperty("myObj", myEngine.newQObject(amp;myObject)); //Now we can access the C   object from JavaScript code.
   QString myScriptJS = "var X = myObj.foo()";  //Calling a C   function from JavaScript
   QJSValue myValue = myEngine.evaluate(myScriptJS);
   if(myValue.isError())
   {
      //If there is an error in the JavaScript code we enter here
      //But I also wanto to enter here if there is an error in my foo() C   function. 
   }
   else
   {
      //Do things with myValue
   }
}
  

Мини-пример myCppClass::foo()

 QJSValue myCppClass::foo()
{       
   if(something)
   {
       //Create a QJSValue myValue with some data
       return myValue;
   }
   else
   {   //ERROR
       //Create a QJSValue of type Error
       return myValueOfTypeError;
   }
}
  

Большое вам спасибо.

Комментарии:

1. Я бы просто сказал, продолжайте и отправьте отчет об ошибке здесь

2. Я видел, что основная проблема отправлена: запрос . Дело в том, что в QJSEngine отсутствует способ перехвата ошибок, создаваемых функциями C . Спасибо.