Отловите исключения в MEX-функции

Чтобы заменить ошибочное поведение по умолчанию, можно отловить исключения добавленные MEX-функции при вызове MATLAB® функции.

Этот код заставляет MATLAB выдавать исключение, потому что это задает входной параметр неправильно для sqrt MATLAB функция. Блок выгоды обрабатывает matlab::engine::MATLABException путем отображения строки, описывающей исключение в окне команды MATLAB.

ArrayFactory factory;
std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine();

// Variable with no value causes error
std::vector<matlab::data::Array> arg;
try {
    matlab::data::Array result = 
        matlabPtr->feval(u"sqrt", arg);
}
catch (const matlab::engine::MATLABException& ex) {
    matlabPtr->feval(u"disp", 0, std::vector<Array>({factory.createScalar(ex.what()) }));
}

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте