exponenta event banner

ошибка

Выдать сообщение об ошибке и вывести

Описание

пример

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.

Если используется только один входной аргумент с error, то MATLAB не преобразует \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