exponenta event banner

утверждать

Ошибка броска, если условие false

Описание

пример

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

пример

assert(cond,msg) выдает сообщение об ошибке, msg, если cond имеет значение false.

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

пример

assert(cond,errID,msg) выдает ошибку, отображает сообщение об ошибке, msgи включает идентификатор ошибки для исключения, если cond имеет значение false. Идентификатор позволяет различать ошибки и управлять тем, что происходит при обнаружении ошибок в 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 имеет значение false, 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