Отобразите сообщение об ошибке с идентификатором и возвратитесь к посдказке MATLAB
#include "mex.h" void mexErrMsgIdAndTxt(const char *errorid, const char *errormsg, ...);
#include "fintrf.h" subroutine mexErrMsgIdAndTxt(errorid, errormsg) character*(*) errorid, errormsg
erroridСтрока, содержащая идентификатор сообщения MATLAB®. Для получения информации о создании идентификаторов смотрите Идентификаторы сообщений.
errormsgПредставьте в виде строки, чтобы отобразиться. В C строка может включать спецификации преобразования, используемые функцией ANSI® C printf.
...В C любые аргументы используются в сообщении. Каждый аргумент должен иметь соответствующую спецификацию преобразования. Обратитесь к своей документации C для таблиц преобразования printf.
Функция mexErrMsgIdAndTxt пишет сообщение об ошибке в окно MATLAB. Для получения дополнительной информации смотрите, что оператор синтаксиса функций error использует идентификатор сообщения. После печати сообщения об ошибке MATLAB отключает файл MEX и возвращает управление в посдказку MATLAB.
Вызов mexErrMsgIdAndTxt не очищает файл MEX из памяти. Так, mexErrMsgIdAndTxt не вызывает функцию, зарегистрированную через mexAtExit.
Если ваше приложение под названием mxCalloc или один из mxCreate* стандартные программы, чтобы выделить память, mexErrMsgIdAndTxt автоматически освобождает выделенную память.
Если вы получаете предупреждения при использовании mexErrMsgIdAndTxt, у вас может быть проблема совместимости управления памятью. Для получения дополнительной информации смотрите Проблемы управления памятью.
В дополнение к errorid и errormsg, функция mexErrMsgIdAndTxt определяет, где ошибка произошла и отображает следующую информацию. Например, в функциональном foo, отображениях mexErrMsgIdAndTxt:
Error using foo
Если вы компилируете свой файл MEX с компилятором MinGW-w64, смотрите ограничения с темой обработки исключений в Поиске и устранении проблем и Ограничениях при компиляции Файлы MEX C/C++ с MinGW-w64.
Смотрите эти примеры в :matlabroot/extern/examples/refbook
Проверка символьного Входного параметраСледующий фрагмент кода проверяет, является ли входной параметр, prhs[0], строкой. В противном случае код выводит предупреждение. Если существует ошибка при чтении входной строки, код отображает сообщение об ошибке и отключает файл MEX.
char *buf;
int buflen;
// initialize variables
if (mxIsChar(prhs[0])) {
if (mxGetString(prhs[0], buf, buflen) == 0) {
mexPrintf("The input string is: %s\n", buf);
}
else {
mexErrMsgIdAndTxt("MyProg:ConvertString",
"Could not convert string data.");
// exit MEX file
}
}
else {
mexWarnMsgIdAndTxt("MyProg:InputString",
"Input should be a string to print properly.");
}
// continue with processing