Подавление предупреждений

Программа может выдавать предупреждения, которые не всегда отрицательно влияют на выполнение. Чтобы избежать путаницы, можно скрыть предупреждающие сообщения во время выполнения, изменив их состояния с 'on' на 'off'.

Чтобы подавить определенные предупреждающие сообщения, необходимо сначала найти идентификатор предупреждения. Каждое предупреждающее сообщение имеет уникальный идентификатор. Чтобы найти идентификатор, сопоставленный с MATLAB® предупреждение, воспроизведите предупреждение. Например, этот код воспроизводит предупреждение, выданное, если MATLAB пытается удалить несуществующую папку:

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

Примечание

Если этот оператор не выдает предупреждающее сообщение, используйте следующий код, чтобы временно включить отображение всех предупреждений, а затем восстановить исходное состояние предупреждения:

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

Чтобы получить информацию о последнем выданном предупреждении, используйте warning или lastwarn функций. Этот код использует 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' off, и повторите операцию.

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'.

Похожие темы