Программирование в NI Labview
LabVIEW > Обработка ошибок

Обработка ошибок

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

По умолчанию, при возникновении ошибки выполнение программы прекращается, место ошибки подсвечивается, появляется окно с кодом и кратким описанием ошибки. Но можно изменить это - например, когда вы не хотите, чтобы при появлении какой-либо ошибки останавливалось выполнение всей программы (например, когда задано неверное имя файла - проще попросить пользователя ввести новое).

VI и функции могут сообщать об ошибке двумя способами - выдавая численные коды ошибок, или используя так называемый "кластер ошибок" (error cluster). Информация об ошибках, как и вся остальная информация в LabVIEW, использует DataFlow модель. Просто соедините выход error out одной функции со входом error in другой функции, и так со всеми функциями на блок-схеме. Если в процессе выполнения программы все идет хорошо, то функции выполняются одна за одной, как и положено. Но если в какой-то из них вдруг произойдет ошибка, то все следующие за ней функции выполняться уже не будут (будут просто пропущены). В конце можно поставить обработчик ошибок - Simple Error Handler VI, смотрите рисунок ниже. Он находится в палитре Functions>>All Functions>>Time & Dialog.


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

Кластеры ошибок (Error Clusters).

Эти кластеры находятся в палитре Functions>>All Functions>>Array & Cluster и содержат следующие элементы:

status - булевское значение, если true - то ошибок нет, если false - значит произошла ошибка. Удобно использовать, например, для остановки циклов и т.п.
code - 32битное число, которое определяет код ошибки. Равно нулю при отсутствии ошибок.
source - строка, содержит описание источника ошибки.

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

Можно подсоединить error cluster к терминалу завершения цикла While. В этом случае, условием остановки или продолжения цикла будет наличие или отсутствие ошибок.

Контекстное меню терминала поменяется при этом с Stop if True и Continue if True на Stop on Error и Continue while Error соответственно.

Ссылки: