Display error message with identifier and return to MATLAB prompt
#include "mex.h" void mexErrMsgIdAndTxt(const char *errorid, const char *errormsg, ...);
#include "fintrf.h" subroutine mexErrMsgIdAndTxt(errorid, errormsg) character*(*) errorid, errormsg
errorid
String containing a MATLAB® message identifier. For information on creating identifiers,
see MException
.
errormsg
String to display, specified as const char*
in C or character*(*)
in Fortran. In C, the function supports either UTF-8 or
local code page (LCP) encoding and the string can include conversion specifications, used by the
ANSI® C
printf
function. The encoding for both the message text and the conversion
arguments must be the same.
...
In C, any arguments used in the message. Each argument must
have a corresponding conversion specification. Refer to your C documentation
for printf
conversion tables.
The mexErrMsgIdAndTxt
function writes an error message to the
MATLAB window. For more information, see the error
function syntax statement using a message identifier. After the
error message prints, MATLAB terminates the MEX file and returns control to the MATLAB prompt.
Calling mexErrMsgIdAndTxt
does not clear the MEX file from
memory. So, mexErrMsgIdAndTxt
does not invoke the function
registered through mexAtExit
.
If your application called mxCalloc
or one of the
mxCreate
* routines to allocate memory,
mexErrMsgIdAndTxt
automatically frees the allocated
memory.
Note
If you get warnings when using mexErrMsgIdAndTxt
, you might
have a memory management compatibility problem. For more information, see Memory Management Issues.
In addition to the errorid
and errormsg
, the
mexErrMsgIdAndTxt
function determines where the error occurred,
and displays the following information. For example, in the function
foo
, mexErrMsgIdAndTxt
displays:
Error using foo
If you compile your MEX file with the MinGW-w64 compiler, see the limitations with exception handling topic in Troubleshooting and Limitations Compiling C/C++ MEX Files with MinGW-w64.
See these examples in
:matlabroot
/extern/examples/refbook
char
InputThe following code snippet checks if input argument, prhs[0]
,
is a string. If not, the code displays a warning. If there is an error reading the
input string, the code displays an error message and terminates the MEX file.
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