assert

Выдать ошибку, если условие ложно

Описание

пример

assert(cond) выдает ошибку если cond является ложным.

пример

assert(cond,msg) выдает ошибку и отображает сообщение об ошибке, msg, если cond является ложным.

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

пример

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

assert(cond,errID,msg,A1,...,An) включает ошибочный идентификатор на исключении и отображает отформатированное сообщение об ошибке.

Примеры

свернуть все

Утверждайте что значение, x, больше заданного минимального значения.

minVal = 7;
x = 26;

assert(minVal < x)

Выражение оценивает как верное, и передачи утверждения.

Утверждайте что значение x между заданными минимальными и максимальными значениями.

maxVal = 13;

assert((minVal < x) && (x < maxVal))
Assertion failed.

Выражение оценивает как ложь. Сбои утверждения и MATLAB выдают ошибку.

Утверждайте, что продуктом двух чисел является номер с двойной точностью.

a = 13;
b = single(42);
c = a*b;

assert(isa(c,'double'),'Product is not type double.')
Product is not type double.

Улучшите сообщение об ошибке, чтобы отобразить тип данных c.

assert(isa(c,'double'),'Product is type %s, not double.',class(c))
Product is type single, not double.

Используйте assert функционируйте, чтобы протестировать на условия, которых не должно происходить в нормальном выполнении кода. Если коэффициенты являются числовыми, вычисленные корни должны быть числовыми. Квадратное уравнение с помощью заданных коэффициентов и вычисленных корней должно быть нулем.

function x = quadraticSolver(C)

validateattributes(C,{'numeric'},{'size',[1 3]})

a = C(1);
b = C(2);
c = C(3);

x(1) = (-b+sqrt(b^2-4*a*c))/(2*a);
x(2) = (-b-sqrt(b^2-4*a*c))/(2*a);
assert(isnumeric(x),'quadraticSolver:nonnumericRoots',...
    'Computed roots are not numeric')

y1 = a*x(1)^2+b*x(1)+c;
y2 = a*x(2)^2+b*x(2)+c;
assert(y1 == 0,'quadraticSolver:root1Error','Error in first root')
assert(isequal(y2,0),'quadraticSolver:root2Error','Error in second root')

end

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

свернуть все

Условие утверждать в виде допустимого выражения MATLAB. Это выражение должно быть логическим или конвертируемым к логическому. Если cond является ложным, assert функционируйте выдает ошибку. cond может включать операторы отношения (такие как < или ==) и логические операторы (такие как &&, ||, или ~). Используйте логические операторы and и or создать составные выражения. MATLAB выполняет составные выражения слева направо, придерживаясь правил приоритета оператора.

Пример: a<0

Пример: exist('myfunction.m','file')

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

Примечание

Необходимо задать больше чем один входной параметр с assert если вы хотите, чтобы MATLAB преобразовал специальные символы (такие как \tNS, и %d) в сообщении об ошибке.

Пример: 'Assertion condition failed.'

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

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

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

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

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

Советы

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

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

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

Смотрите также

|

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