throwAsCaller

Класс: MException

Выдайте исключение, как будто происходит в рамках вызывания функции

Синтаксис

throwAsCaller (исключение)

Описание

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

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

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

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

развернуть все

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

Примеры

развернуть все

Создайте функцию, 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, потому что это - местоположение ошибки в функции вызова.

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

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