Обработка исключений в приложении MATLAB

Обзор

Независимо от того, насколько тщательно вы планируете и тестируете программы, которые вы пишете, они не всегда могут запускаться так гладко, как ожидалось при выполнении в разных условиях. Всегда рекомендуется включать проверку ошибок в программы для обеспечения надежной операции при любых условиях.

В MATLAB® программное обеспечение может решить, как ваши программы реагируют на различные типы ошибок. Можно хотеть запросить у пользователя больше вход, отобразить расширенную информацию об ошибке или предупреждении или, возможно, повторить вычисление с использованием значений по умолчанию. Возможности обработки ошибок в MATLAB помогают вашим программам проверить конкретные условия ошибки и выполнить соответствующий код в зависимости от ситуации.

Когда MATLAB обнаруживает серьезный отказ в выполняемой ей команде или программе, он собирает информацию о том, что происходило в момент ошибки, отображает сообщение, которое поможет пользователю понять, что пошло не так, и завершает выполнение команды или программы. Это называется throwing an exception. Вы можете получить исключение при вводе команд в командной строке MATLAB или при выполнении программного кода.

Получение исключения в командной строке

Если вы получаете исключение в подсказке MATLAB, у вас есть несколько опций того, как с ним справиться, как описано ниже.

Определите отказ из сообщения об ошибке

Вычислите отобразившееся сообщение об ошибке MATLAB. Большинство сообщений об ошибке пытаются объяснить, по крайней мере, непосредственную причину отказа программы. Часто существует достаточная информация, чтобы определить причину и то, что вы должны сделать, чтобы исправить ситуацию.

Проверьте код сбоя

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

surf

Error using surf (line 49)
Not enough input arguments.

Текст включает имя функции, которая выдала ошибку (surf, в этом случае) и показывает неисправный номер линии в программном файле этой функции. Щелкните номер линии; MATLAB открывает файл и устанавливает курсор в местоположение в файле, где произошла ошибка. Вы можете определить причину ошибки, исследуя эту линию и код, который предшествует ей.

Пройдите по коду в отладчике

Можно использовать отладчик MATLAB, чтобы пройти через код сбоя. Щелкните подчеркнутый текст ошибки, чтобы открыть файл в редакторе MATLAB в точке ошибки или рядом с ней. Затем щелкните дефис в начале этой линии, чтобы задать точку останова в этом месте. Когда вы перезапускаете программу, MATLAB останавливает выполнение в точке останова и позволяет вам пройти через код программы. Область команды dbstop on error также полезно найти точку ошибки.

Для получения дополнительной информации см. документацию по отладке программы MATLAB.

Получение исключения в коде программы

Когда вы записываете свою собственную программу в программный файл, можно catch исключения и попытаться обработать или разрешить их, вместо того, чтобы разрешить завершение работы вашей программы. Когда вы ловите исключение, вы прерываете обычный процесс завершения и вводите блок кода, который решает неисправную ситуацию. Этот блок кода называется catch block.

Некоторые вещи, которые вы, возможно, захотите сделать в блоке catch:

  • Проверьте информацию, полученную об ошибке.

  • Соберите дополнительную информацию для отчета пользователю.

  • Попытайтесь выполнить поставленную задачу каким-то другим способом.

  • Очистите все нежелательные побочные эффекты ошибки.

Когда вы достигаете конца блока catch, можно либо продолжить выполнение программы, если это возможно, либо завершить его.

Использование MException объект для доступа к информации об исключении в вашей программе. Дополнительные сведения см. в разделе Ответ на исключение.

Создание нового исключения

Когда ваш программный код обнаруживает условие, которое либо сделает программу неудачной, либо даст неприемлемые результаты, он должен выдать исключение. Эта процедура

  • Сохраняет информацию о том, что пошло не так и какой код выполнялся в момент ошибки.

  • Собирает любую другую соответствующую информацию об ошибке.

  • Указывает MATLAB выдать исключение.

Использование MException объект для сбора информации об ошибке. Для получения дополнительной информации см. раздел Выдать исключение.