引发警告和错误
引发警告
您可以引发警告以便给在运行程序时检测到的意外条件添加标记。warning 函数将一则警告消息输出到命令行。警告与错误的区别主要表现在两个方面:
警告不会暂停程序执行。
您可以隐蔽任何无用的 MATLAB® 警告。
在您的代码中使用 warning 函数,即可在执行时生成警告消息。将消息指定为 warning 函数的输入参量:
warning('Input must be text')例如,您可以在代码中插入警告来验证软件版本:
function warningExample1
if ~strncmp(version, '7', 1)
warning('You are using a version other than v7')
end抛出错误
您可以抛出错误以标记程序中的严重问题。使用 error 函数将错误消息输出到命令行。在显示消息后,MATLAB 停止执行当前的程序。
例如,假定您构造一个函数,以返回 n 个元素中 k 个元素的组合数。如果 k > n,此类函数没有意义;您不能从 4 个元素中选择 8 个元素。您必须将此事实结合到该函数中,以便让使用 combinations 的任何人都知道此问题:
function com = combinations(n,k) if k > n error('Cannot calculate with given values') end com = factorial(n)/(factorial(k)*factorial(n-k)); end
如果 combinations 函数收到无效输入,MATLAB 在抛出错误消息后立即停止执行:
combinations(4,8)
Error using combinations (line 3) Cannot calculate with given values
向您的警告和错误中添加运行时参数
要使您的警告或错误消息更具体,请在执行时插入消息的各个组成部分。warning 函数使用的转换字符与 sprintf 函数所用的相同。转换字符充当子字符串或值的占位符,在执行代码之前是未知的。
例如,此警告使用 %s 和 %d 来标记在何处插入变量 arrayname 和 arraydims 的值:
warning('Array %s has %d dimensions.',arrayname,arraydims)arrayname = 'A' 且 arraydims = 3 时执行此命令,MATLAB 会做出如下响应:Warning: Array A has 3 dimensions.
向您的警告和错误中添加运行时参数可阐明程序中的问题。以抛出错误中的函数 combinations 为例。您可以使用运行时参数抛出一则包含更多信息的错误:
function com = combinations(n,k) if k > n error('Cannot choose %i from %i elements',k,n) end com = factorial(n)/(factorial(k)*factorial(n-k)); end
combinations(6,9)
Error using combinations (line 3) Cannot choose 9 from 6 elements
向警告和错误中添加标识符
标识符提供一种唯一引用警告或错误的方法。
使用标识符启用或禁用警告。在 warning 函数中使用标识文本参量以将一个唯一标记绑定到消息:
warning(identifier_text,message_text)
例如,您可以在上一个 MATLAB 警告中添加一个有关所运行的软件版本的标识符标记:
minver = '7';
if ~strncmp(version,minver,1)
warning('MYTEST:VERCHK','Running a version other than v%s',minver)
end通过在错误消息中添加标识符,可以进行逆向测试。但是,在错误中添加和找回更多信息往往需要使用 MException 对象。
另请参阅
warning | lastwarn | warndlg | MException