error

Выдать ошибку и отобразить сообщение

Описание

пример

error(msg) выдает ошибку и отображает сообщение об ошибке.

error(msg,A1,...,An) отображает сообщение об ошибке, содержащее символы преобразования форматирования, например используемые в MATLAB® sprintf функция. Каждый символ преобразования в msg преобразуется в одно из значений A1,...,An.

error(errID,___) включает идентификатор ошибки для исключения. Идентификатор позволяет вам различать ошибки и управлять тем, что происходит, когда MATLAB сталкивается с ошибками. Можно включать любой из входных параметров в предыдущие синтаксисы.

пример

error(errorStruct) выдает ошибку, используя поля в скалярной структуре.

пример

error(correction,___) предоставляет рекомендуемое исправление для исключения. Можно включать любой из входных параметров в предыдущие синтаксисы.

Примеры

свернуть все

msg = 'Error occurred.';
error(msg)
Error occurred.

Выдать форматированное сообщение об ошибке с пропуском линии. Вы должны задать более одного входные параметры с error если вы хотите, чтобы MATLAB преобразовывал специальные символы (такие как \n) в сообщении об ошибке. Включите информацию о классе переменной n в сообщении об ошибке.

n = 7;
if ~ischar(n)
   error('Error. \nInput must be a char, not a %s.',class(n))
end
Error.
Input must be a char, not a double.

Если вы используете только один входной параметр с errorMATLAB не преобразует \n к пропуску линии.

if ~ischar(n)
   error('Error. \nInput must be a char.')
end
Error. \nInput must be a char.

Выдать ошибку с идентификатором.

if ~ischar(n)
   error('MyComponent:incorrectType',...
       'Error. \nInput must be a char, not a %s.',class(n))
end
Error.
Input must be a char, not a double.

Используйте MException.last чтобы просмотреть последнее неоткрытое исключение.

exception = MException.last
exception = 

  MException with properties:

    identifier: 'MyComponent:incorrectType'
       message: 'Error. 
Input must be a char, not a double.'
         cause: {0x1 cell}
         stack: [0x1 struct]

Создайте структуру с полями сообщений и идентификаторов. Чтобы сохранить пример простым, не используйте поле стека.

errorStruct.message = 'Data file not found.';
errorStruct.identifier = 'MyFunction:fileNotFound';
errorStruct = 

       message: 'Data file not found.'
    identifier: 'MyFunction:fileNotFound'

Выдать ошибку.

error(errorStruct)
Data file not found.

Создайте функцию hello для этого требуется один входной параметр. Добавьте предложенный входной параметр "world" к сообщению об ошибке.

function hello(audience)
if nargin < 1
    aac = matlab.lang.correction.AppendArgumentsCorrection('"world"');
    error(aac, 'MATLAB:notEnoughInputs', 'Not enough input arguments.')   
end
fprintf("Hello, %s!\n", audience)
end

Вызовите функцию без аргумента.

hello
Error using hello (line 4)
Not enough input arguments.

Did you mean:
>> hello("world")

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

свернуть все

Информация об ошибке, заданная как вектор символов или строковый скаляр. Это сообщение отображается как сообщение об ошибке. Для форматирования сообщения используйте escape-последовательности, такие как \t или \n. Можно также использовать любые спецификаторы формата, поддерживаемые sprintf функции, такие как %s или %d. Задайте значения для спецификаторов преобразования через A1,...,An входные параметры. Для получения дополнительной информации см. раздел Форматирование текста.

Примечание

Вы должны задать более одного входные параметры с error если вы хотите, чтобы MATLAB преобразовывал специальные символы (такие как \t, \n, %s, и %d) в сообщении об ошибке.

Пример: 'File not found.'

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

Идентификатор ошибки включает одно или несколько полей компонента и мнемоническое поле. Поля должны быть разделены двоеточием. Например, идентификатор ошибки с полем компонента component и мнемоническое поле mnemonic задается как 'component:mnemonic'. Каждый компонент и мнемонические поля должны начинаться с буквы. Остальные символы могут быть алфавитно-цифровыми (A-Z, a-z, 0-9) и подчеркивающими. Никакие символы белого пространства не могут появиться где-либо в errID. Для получения дополнительной информации смотрите MException.

Пример: 'MATLAB:singularMatrix'

Пример: 'MATLAB:narginchk:notEnoughInputs'

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

Информация об ошибках, заданная как скалярная структура. Структура должна содержать по крайней мере одно из этих полей.

message

Сообщение об ошибке. Для получения дополнительной информации смотрите msg.

identifier

Идентификатор ошибки. Для получения дополнительной информации смотрите errID.

stack

Поле стека для ошибки. Когда errorStruct включает в себя stack поле, error использует его, чтобы задать поле стека ошибки. Когда вы задаете stack, используйте абсолютное имя файла и всю последовательность функций, которая вложяет функцию в стек системы координат. Этот вектор символов аналогичен вектору, возвращаемому dbstack('-completenames').

Предлагаемое исправление для этого исключения, заданное как matlab.lang.correction.AppendArgumentsCorrection, matlab.lang.correction.ConvertToFunctionNotationCorrection, или matlab.lang.correction.ReplaceIdentifierCorrection объект.

Совет

  • Когда вы выдаете ошибку, MATLAB собирает информацию о ней и хранит ее в структуре данных, которая является объектом MException класс. Вы можете получить доступ к информации в объекте исключения при помощи try/catch. Или, если ваша программа заканчивается из-за исключения и возвращает управление в командную строку, можно использовать MException.last.

  • MATLAB не прекращает выполнение программы, если ошибка возникает в try блок. В этом случае MATLAB передает управление в catch блок.

  • Если все входы в error являются пустыми, MATLAB не выдает ошибку.

Расширенные возможности

.
Представлено до R2006a