try, catch

Выполните операторы и зафиксируйте получившиеся ошибки

Синтаксис

try
   statements
catch exception
   statements
end

Описание

пример

try statements, catch statements end выполняет операторы в try блокируйтесь и фиксирует получившиеся ошибки в catch блок. Этот подход позволяет вам заменять ошибочное поведение по умолчанию для набора операторов программы. Если любой оператор в try блок генерирует ошибку, программное управление сразу переходит к catch блокируйтесь, который содержит ваши операторы обработки ошибок.

exception MException объект, который позволяет вам идентифицировать ошибку. catch блок присваивает текущий объект исключения переменной в exception.

Оба try и catch блоки могут содержать, вложил try/catch операторы.

Примеры

свернуть все

Создайте две матрицы, которые вы не можете конкатенировать вертикально.

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

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

Используйте try/catch отобразить больше информации о размерностях.

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.

Если матричные размерности не соглашаются, MATLAB® отображения больше информации о несоответствии. Любые другие ошибки появляются, как обычно.

Отловите любое исключение, сгенерированное путем вызывания несуществующей функции, notaFunction. Если существует исключение, выдайте предупреждение и присвойте выход значение 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.

Отдельно, вызов notaFunction результаты по ошибке. Если вы используете try и catch, этот код отлавливает любое исключение и повторно группирует его как предупреждение, позволяя MATLAB продолжить выполнять последующие команды.

Используйте try/catch обрабатывать различные типы ошибок по-разному.

  • Если функциональный notaFunction не определено, выдайте предупреждение вместо ошибки и присвойте выход значение NaN.

  • Если notaFunction.m существует, но скрипт вместо функции, выдайте предупреждение вместо ошибки, запустите скрипт и присвойте выход значение 0.

  • Если MATLAB выдает ошибку по какой-либо другой причине, повторно выдайте исключение.

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. 

Советы

  • Вы не можете использовать несколько catch блоки в try блокируйтесь, но можно вложить полный try/catch блоки.

  • В отличие от некоторых других языков, MATLAB не позволяет использование finally блокируйтесь в try/catch операторы.

Представлено до R2006a