перебросок

Повторно выдайте ранее перехваченную исключительную ситуацию

Синтаксис

rethrow(exception)

Описание

пример

rethrow(exception) повторно выдает ранее перехваченную исключительную ситуацию, exception. MATLAB® обычно отвечает на ошибки путем завершения в настоящее время под управлением программы. Однако можно использовать блок try/catch, чтобы отловить исключение. Это прерывает завершение программы, таким образом, можно выполнить собственные процедуры обработки ошибок. Чтобы отключить программу и вновь отобразить исключение, закончите блок catch оператором rethrow.

rethrow обрабатывает трассировку стека по-другому по сравнению с error, assert и throw. Вместо того, чтобы создать стек из того, где MATLAB выполняет функцию, rethrow сохраняет исходную информацию об исключении и позволяет вам восстановить источник исходной ошибки.

Примеры

свернуть все

Заставьте MATLAB выдавать ошибку путем вызова surf без входных параметров. Отловите исключение, отобразите ошибочный идентификатор и повторно выдайте исключение.

try
    surf
catch ME
    disp(['ID: ' ME.identifier])
    rethrow(ME)
end
ID: MATLAB:narginchk:notEnoughInputs
Error using surf (line 49)
Not enough input arguments.

Создайте функцию, combineArrays, в вашей рабочей папке.

function C = combineArrays(A,B)
try
    C = catAlongDim1(A,B);       % Line 3
catch exception
    throw(exception)             % Line 5
end
end

function V = catAlongDim1(V1,V2)
V = cat(1,V1,V2);                % Line 10
end

Вызовите функцию combineArrays с массивами различных размеров.

A = 1:5;
B = 1:4;

combineArrays(A,B)
Error using combineArrays (line 5)
Dimensions of matrices being concatenated are not consistent.

Стек относится, чтобы выровнять 5, где MATLAB выдает исключение.

Замените throw(exception) на rethrow(exception) на строке 5 из функции combineArrays и вызовите функцию снова.

combineArrays(A,B)
Error using cat
Dimensions of matrices being concatenated are not consistent.

Error in combineArrays>catAlongDim1 (line 10)
V = cat(1,V1,V2);                % Line 10

Error in combineArrays (line 3)
    C = catAlongDim1(A,B);       % Line 3

Функция rethrow поддерживает исходный стек и указывает, что ошибка находится на строке 3.

Входные параметры

свернуть все

Исключение, содержащее причину и местоположение ошибки, заданной как скалярный объект MException.

Смотрите также

| | | | |

Представленный в R2007b