утверждение

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

Синтаксис

assert(cond)
assert(cond,msg)
assert(cond,msg,A1,...,An)
assert(cond,msgID,msg)
assert(cond,msgID,msg,A1,...,An)

Описание

пример

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

пример

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

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

пример

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

assert(cond,msgID,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 преобразовал специальные символы (такие как \t, \n, %s и %d) в сообщении об ошибке.

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

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

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

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

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

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

Советы

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

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

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

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