Main Content

隐蔽警告

您的程序发出的警告并非总是对执行产生不利影响。为避免混淆,您可以在执行期间将警告消息的状态从 'on' 更改为 'off' 来隐蔽这些消息。

要隐蔽特定的警告消息,必须首先查找警告标识符。每条警告消息都有一个唯一标识符。要查找与 MATLAB® 警告关联的标识符,请重现该警告。例如,以下代码会重现 MATLAB 在尝试删除不存在的文件夹时引发的警告:

rmpath('folderthatisnotonpath')
Warning: "folderthatisnotonpath" not found in path. 

注意

如果此语句不生成警告消息,请使用以下代码暂时显示所有警告,然后恢复初始的警告状态:

w = warning ('on','all');
rmpath('folderthatisnotonpath')
warning(w)

要获取有关最近引发的警告的信息,请使用 warninglastwarn 函数。此代码使用 query 状态返回一个数据结构体,其中包含标识符和最近引发的警告当前所处的状态:

w = warning('query','last')
w = 

    identifier: 'MATLAB:rmpath:DirNotFound'
         state: 'on'
您可以将标识符字段保存在变量 id 中:
id = w.identifier;

注意

warning('query','last') 返回最近显示的警告。MATLAB 仅显示具有 state: 'on' 和警告标识符的警告消息。

使用 lastwarn 函数,您可以检索最近的警告消息,而不管其显示状态如何:

lastwarn
ans =

"folderthatisnotonpath" not found in path.

开启和关闭警告

query 状态获取标识符后,使用此信息禁用或启用与该标识符关联的警告。

继续上一部分中的示例,关闭 'MATLAB:rmpath:DirNotFound' 警告,并重复操作。

warning('off',id)
rmpath('folderthatisnotonpath')

MATLAB 不显示警告。

开启警告,并尝试删除不存在的路径:

warning('on',id)
rmpath('folderthatisnotonpath')
Warning: "folderthatisnotonpath" not found in path.

MATLAB 此时将引发警告。

提示

使用 warning('off','last') 关闭最近生成的警告。

控制所有警告

所有一词指那些在您的当前 MATLAB 会话中已引发或修改的警告。已修改的警告状态仅在整个当前会话中保留。开始新会话将会恢复默认设置。

使用标识符 'all' 表示包含所有警告的组。使用以下任一语法查看所有警告的状态:

warning('query','all')
warning

要启用所有警告并验证状态,请执行以下操作:

warning('on','all')
warning('query','all')
All warnings have the state 'on'.

要禁用所有警告并验证状态,请使用此语法:

warning('off','all')
warning
All warnings have the state 'off'.

相关主题