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