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)

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

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

maxVal = 13;

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

Выражение оценивается как false. Сбой утверждения, и 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'. Каждый компонент и мнемонические поля должны начинаться с буквы. Остальные символы могут быть алфавитно-цифровыми (A-Z, a-z, 0-9) и подчеркивающими. Никакие символы белого пространства не могут появиться где-либо в errID. Для получения дополнительной информации смотрите MException.

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

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

Совет

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

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

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

.

См. также

|

Введенный в R2007a