Main Content

assert

条件为 false 时引发错误

说明

示例

如果 cond 为 false,assert(cond) 会引发错误。

示例

如果 cond 为 false,assert(cond,msg) 会引发错误并显示错误消息 msg

如果 cond 为 false,assert(cond,msg,A) 会显示一条错误消息,其中包含格式设置转换字符,例如与 MATLAB® sprintf 函数一起使用的字符。msg 中的每个转换字符都会转换为 A 中的一个值。

示例

如果 cond 为 false,assert(cond,errID,msg) 会抛出错误并显示错误消息 msg,还会包含一个标示此异常的错误标识符。此标识符可用于区分错误,它还允许您控制在 MATLAB 遇到错误时系统做何反应。

assert(cond,errID,msg,A) 会显示格式化的错误消息,还会包含标示异常的错误标识符。

示例

全部折叠

断言值 x 大于指定的最小值。

minVal = 7;
x = 26;

assert(minVal < x)

表达式的计算结果为 true,断言通过。

断言 x 的值介于指定的最小值和最大值之间。

maxVal = 13;

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

表达式的计算结果为 false。断言失败,MATLAB 引发错误。

断言两个数字的乘积为双精度值。

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

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

增强错误消息以便显示 c 的数据类型。

assert(isa(c,'double'),'Product is type %s, not double.',class(c))
Error using assert
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 可以包含关系运算符(例如 <==)和逻辑运算符(例如 &&||~)。使用逻辑运算符 andor 创建复合表达式。MATLAB 按照运算符优先级规则从左至右计算复合表达式。

示例: a<0

示例: exist('myfunction.m','file')

有关断言失败的信息,指定为字符向量或字符串标量。该消息显示为错误消息。要设置消息格式,请使用转义序列,例如 \t\n。还可以使用 sprintf 函数支持的任何格式设定符,例如 %s%d。通过 A1,...,An 输入参量指定转换设定符的值。有关详细信息,请参阅格式化文本

注意

如果您希望 MATLAB 转换错误消息中的特殊字符(例如 \t\n%s%d),必须为 assert 指定多个输入参量。

示例: '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 中推出

全部展开

另请参阅

|