Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

error

Generar un error y mostrar un mensaje

Descripción

error(msg) genera un error y muestra un mensaje de error.

ejemplo

error(msg,A) muestra un mensaje de error que contiene caracteres de conversión de formato, como los utilizados con la función sprintf de MATLAB®. Cada carácter de conversión de msg se convierte a uno de los valores A.

error(errID,___) incluye un identificador de error en la excepción. El identificador permite distinguir errores y controlar lo que ocurre cuando MATLAB detecta los errores. Puede utilizar cualquiera de los argumentos de entrada de las sintaxis anteriores.

error(errorStruct) genera un error utilizando los campos de una estructura escalar.

ejemplo

error(correction,___) proporciona una solución sugerida para la excepción. Puede utilizar cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

Ejemplos

contraer todo

msg = 'Error occurred.';
error(msg)
Error occurred.

Genere un mensaje de error con formato con un salto de línea. Debe especificar más de un argumento de entrada con error si desea que MATLAB convierta caracteres especiales (como \n) del mensaje de error. Incluya información sobre la clase de la variable n en el mensaje de error.

n = 7;
if ~ischar(n)
   error('Error. \nInput must be a char, not a %s.',class(n))
end
Error.
Input must be a char, not a double.

Si solo utiliza un argumento de entrada con error, MATLAB no convierte \n a un salto de línea.

if ~ischar(n)
   error('Error. \nInput must be a char.')
end
Error. \nInput must be a char.

Genere un error con un identificador.

if ~ischar(n)
   error('MyComponent:incorrectType',...
       'Error. \nInput must be a char, not a %s.',class(n))
end
Error.
Input must be a char, not a double.

Utilice MException.last para ver la última excepción no detectada.

exception = MException.last
exception = 

  MException with properties:

    identifier: 'MyComponent:incorrectType'
       message: 'Error. 
Input must be a char, not a double.'
         cause: {0x1 cell}
         stack: [0x1 struct]

Cree una estructura con campo de mensaje y de identificador. Para que el ejemplo sea sencillo, no utilice el campo de pila.

errorStruct.message = 'Data file not found.';
errorStruct.identifier = 'MyFunction:fileNotFound';
errorStruct = 

       message: 'Data file not found.'
    identifier: 'MyFunction:fileNotFound'

Genere el error.

error(errorStruct)
Data file not found.

Cree una función hello que requiera un argumento de entrada. Añada un argumento de entrada sugerido "world" al mensaje de error.

function hello(audience)
if nargin < 1
    aac = matlab.lang.correction.AppendArgumentsCorrection('"world"');
    error(aac, 'MATLAB:notEnoughInputs', 'Not enough input arguments.')   
end
fprintf("Hello, %s!\n", audience)
end

Llame a la función sin un argumento.

hello
Error using hello
Not enough input arguments.

Did you mean:
>> hello("world")

Argumentos de entrada

contraer todo

Información sobre el error, especificada como escalar de texto que contiene la especificación del formato. Este mensaje se muestra como el mensaje de error. Para formatear el mensaje, utilice secuencias de escape, como \t o \n. También puede utilizar cualquier especificador de formato compatible con la función sprintf, como %s o %d. Especifique valores para los especificadores de conversión mediante los argumentos de entrada A1,...,An. Para obtener más información, consulte Dar formato a texto.

Nota

Debe especificar más de un argumento de entrada con error si desea que MATLAB convierta caracteres especiales (como \t, \n, %s y %d) del mensaje de error.

Ejemplo: 'File not found.'

Identificador para el error, especificado como un escalar de texto que contiene los campos de componente y mnemónico. Utilice el identificador de error para ayudar a identificar el origen del error o para controlar un subconjunto seleccionado de los errores del programa.

El identificador de error incluye uno o más campos componente y un campo mnemónico. Los campos deben estar separados por dos puntos. Por ejemplo, un identificador de error con un campo de componente component y un campo mnemónico mnemonic se especifica como 'component:mnemonic'. Los campos de componente y mnemónico deben comenzar por una letra. Los caracteres restantes pueden ser caracteres alfanuméricos (A–Z, a–z, 0–9) y guiones bajos. No pueden aparecer caracteres de espacio en blanco en ningún lugar de errID. Para obtener más información, consulte MException.

Ejemplo: 'MATLAB:singularMatrix'

Ejemplo: 'MATLAB:narginchk:notEnoughInputs'

Valor que reemplaza los especificadores de conversión de msg, especificado como vector de caracteres, escalar de cadena o escalar numérico.

Error al proporcionar información, especificado como estructura escalar. La estructura debe contener al menos uno de estos campos.

message

Mensaje de error. Para obtener más información, consulte msg.

identifier

Identificador de error. Para obtener más información, consulte errID.

stack

Campo de pila para el error. Cuando errorStruct incluye un campo stack, error lo utiliza para establecer el campo de pila del error. Cuando especifique stack, utilice el nombre de archivo absoluto y la secuencia completa de funciones que anida la función en el marco de pila. Este vector de caracteres es el mismo que el devuelto por dbstack('-completenames').

Sugerencias

  • Cuando genera un error, MATLAB captura información sobre él y la almacena en una estructura de datos que es un objeto de la clase MException. Puede acceder a información del objeto de excepción mediante try/catch. O, si el programa termina debido a una excepción y devuelve el control a la línea de comandos, puede utilizar MException.last.

  • MATLAB no deja de ejecutar un programa si se produce un error dentro de un bloque try. En este caso, MATLAB pasa el control al bloque catch.

  • Si todas las entradas de error están vacías, MATLAB no genera un error.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a