error

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

Описание

пример

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

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

error(msgID,___) включает ошибочный идентификатор на исключении. Идентификатор позволяет вам отличить ошибки и управлять тем, что происходит, когда 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 преобразовал специальные символы (такие как \tNS, и %d) в сообщении об ошибке.

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

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

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

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

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

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

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

message

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

identifier

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

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 не выдает ошибку.

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

Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.

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