попытка, выгода

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

Синтаксис

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

Была ли эта тема полезной?