引发警告和错误
引发警告
您可以引发警告以便给在运行程序时检测到的意外条件添加标记。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