Main Content

引发警告和错误

引发警告

您可以引发警告以便给在运行程序时检测到的意外条件添加标记。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 来标记在何处插入变量 arraynamearraydims 的值:

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
如果此函数收到无效参数,MATLAB 会引发错误消息并停止程序:
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 对象。

另请参阅

| | |

相关主题