exponenta event banner

перебросок

Повторное использование ранее обнаруженного исключения

Описание

пример

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