exponenta event banner

Выдать предупреждения и ошибки

Выдать предупреждения

Можно выдать предупреждение, чтобы отметить непредвиденные условия, обнаруженные при запуске программы. 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 останавливает выполнение текущей программы.

Например, предположим, что вы построите функцию, которая возвращает количество комбинаций k элементы из n элементы. Такая функция является бессмысленной, если k > n; вы не можете выбрать 8 элементов, если вы начинаете только с 4. Вы должны включить этот факт в функцию, чтобы позволить кому-либо использовать 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
Если эта функция получает недопустимые аргументы, 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 объекты.

См. также

| | |

Связанные темы