exponenta event banner

throwAsCaller

Создать исключение, как если бы оно возникло в вызывающей функции

Описание

пример

throwAsCaller(exception) создает исключение, как если бы оно возникло в вызывающей функции. Исключение завершает выполняемую в данный момент функцию и возвращает управление на клавиатуру или вложенный элемент catch блок. При создании исключения извне try/catch оператор MATLAB ® отображает сообщение об ошибке в окне команд.

Вы можете получить доступ к MException объект через try/catch оператор или MException.last функция.

Иногда для ошибки более информативно указывать на местоположение в вызывающей функции, которое приводит к исключению, а не указывать на функцию, которая фактически порождает исключение. Вы можете использовать throwAsCaller для упрощения отображения ошибок.

Примеры

свернуть все

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

function sayHello(N)
checkInput(N)
str = ['Hello, ' N '!'];
disp(str)

function checkInput(N)
if ~ischar(N)
    ME = MException('sayHello:inputError','Input must be char.');
    throw(ME)
end

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

sayHello(42)
Error using sayHello>checkInput (line 9)
Input must be char.

Error in sayHello (line 2)
checkInput(N)

Верхняя часть стека относится к строке 9, поскольку здесь MATLAB создает исключение. После начального кадра стека MATLAB отображает информацию из вызывающей функции.

Заменить throw(ME) с throwAsCaller(ME) в строке 9 sayHello.m и снова вызовите функцию.

sayHello(42)
Error using sayHello (line 2)
Input must be char.

Верхняя часть стека относится к строке 2, так как это местоположение ошибки в вызывающей функции.

Входные аргументы

свернуть все

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

См. также

| | | |

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