Main Content

MEX 関数での例外のキャッチ

既定のエラー動作をオーバーライドするために、MATLAB® 関数を呼び出す際に MEX 関数でスローされる例外をキャッチできます。

次のコードでは、MATLAB 関数 sqrt の入力引数の定義が正しくないため、MATLAB によって例外がスローされます。catch ブロックが 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()) }));
}

関連するトピック