assert

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

Описание

пример

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 преобразовал специальные символы (такие как \tNS, и %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