Main Content

try, catch

Ejecutar instrucciones y detectar los errores resultantes

Sintaxis

try
   statements
catch exception
   statements
end

Descripción

ejemplo

try statements, catch statements end ejecuta las instrucciones en el bloque try y detecta los errores resultantes en el bloque catch. Este método permite reemplazar el comportamiento del error predeterminado para un conjunto de instrucciones de programa. Si cualquier instrucción en un bloque try genera un error, el control del programa pasa inmediatamente al bloque catch, que contiene las instrucciones para gestionar errores.

exception es un objeto MException que permite identificar el error. El bloque catch asigna el objeto de excepción actual a la variable en exception.

Tanto el bloque try como el bloque catch pueden incluir instrucciones try/catch anidadas.

Ejemplos

contraer todo

Cree dos matrices que no pueda concatenar verticalmente.

A = rand(3);
B = ones(5);

C = [A; B];
Error using vertcat
Dimensions of matrices being concatenated are not consistent.

Utilice try/catch para mostrar más información sobre las dimensiones.

try
   C = [A; B];
catch ME
   if (strcmp(ME.identifier,'MATLAB:catenate:dimensionMismatch'))
      msg = ['Dimension mismatch occurred: First argument has ', ...
            num2str(size(A,2)),' columns while second has ', ...
            num2str(size(B,2)),' columns.'];
        causeException = MException('MATLAB:myCode:dimensions',msg);
        ME = addCause(ME,causeException);
   end
   rethrow(ME)
end 
Error using vertcat
Dimensions of matrices being concatenated are not consistent.

Caused by:
    Dimension mismatch occurred: First argument has 3 columns while second has 5 columns.

Si las dimensiones de las matrices no coinciden, MATLAB® muestra más información sobre la falta de coincidencia. El resto de errores aparecen como lo hacen normalmente.

Detecte cualquier excepción generada mediante la llamada a una función que no existe: notaFunction. Si existe una excepción, genere una advertencia y asigne a la salida un valor de 0.

try
    a = notaFunction(5,6);
catch
    warning('Problem using function.  Assigning a value of 0.');
    a = 0;
end
Warning: Problem using function.  Assigning a value of 0.

Por sí misma, la llamada a notaFunction da como resultado un error. Si utiliza try y catch, este código detecta cualquier excepción y vuelve a empaquetarla como advertencia, lo que permite que MATLAB continúe ejecutando los siguientes comandos.

Utilice try/catch para gestionar diferentes tipos de errores de manera distinta.

  • Si la función notaFunction no está definida, genere una advertencia en lugar de un error y asigne a la salida un valor de NaN.

  • Si notaFunction.m existe, pero es un script en lugar de una función, genere una advertencia en lugar de un error, ejecute el script y asigne a la salida un valor de 0.

  • Si MATLAB genera un error por cualquier otro motivo, vuelva a generar la excepción.

try
    a = notaFunction(5,6);
catch ME
    switch ME.identifier
        case 'MATLAB:UndefinedFunction'
            warning('Function is undefined.  Assigning a value of NaN.');
            a = NaN;
        case 'MATLAB:scriptNotAFunction'
            warning(['Attempting to execute script as function. '...
                'Running script and assigning output a value of 0.']);
            notaFunction;
            a = 0;
        otherwise
            rethrow(ME)
    end
end
Warning: Function is undefined.  Assigning a value of NaN. 

Sugerencias

  • No puede utilizar múltiples bloques catch dentro de un bloque try, pero sí puede anidar bloques try/catch completos.

  • A diferencia de lo que ocurre con otros lenguajes, MATLAB no permite utilizar un bloque finally dentro de instrucciones try/catch.

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a

expandir todo