пятница, 22 января 2010 г.

§ 2. Об автоматической обработке ошибок

В LabVIEW есть пара опций, которые обычно отключают (хотя они включены по умолчанию):

Суть автоматической обработки ошибок заключается в том, что при возникновении ошибки на выходе VI исполнение программы может быть остановлено (за диалог отвечает как раз вторая опция):


В вышеприведённом примере мы создаём новую папку, но такая папка уже существует, что и вызывает ошибку 10 (если у вас нет папки Windows на диске с:\ просто запустите этот пример дважды). Поскольку выход примитива CreateFolder не подсоединён, то возникающая ошибка вызывает прерывание выполнения программы.

В следующем примере это дилоговое окно не появится:


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

Однако на заключительном этапе имеет смысл включить эту опцию и вычистить участки кода,  вызывающие "оборванные" ошибки (ну или как минимум обратить внимание на такие места).

Важно также не лениться (вы, конечно, можете просто соединить выход с блишайшей границей цикла или последовательности). Если вы не готовы принять решение о логике обработки какой-то конкретной ошибки немедленно, то лучше сделать SubVI со входом ошибки и подосединить его к выходу ошибки в "проблемном" месте. Внутри этого SubVI вы можете организовать запись в лог-файл или в лог отладки (более детально мы это рассмотрим в другом параграфе). Таким образом вы всегда сможете найти места в программе, где проблема пока не устранена (кстати, это будет работать и в исполняемом приложении).

6 комментариев:

  1. Интересная статья, спасибо большое!
    Не хотите её опубликовать у нас на LabVIEW Portal?
    www.labviewportal.eu/ru

    ОтветитьУдалить
  2. Спасибо, Павел!
    Опубликовать конечно можно, почему бы и нет. В каком разделе это будет удобнее сделать? Прямо в форум?

    ОтветитьУдалить
  3. А, Андрей это вы?:-)
    Сразу не узнал - богатым будете)))
    Отличное сообщество создали, побольше бы таких!
    А написать статью у нас на портале не сложно - заходите на главную, регестрируйтесь, после регистрации слева у вас появится меню, там выбираете пункт - Написать статью. Писать статьи можно в формате Уроки. Можно так же при желании завести свой блог. После публикации статья будет принята к рассмотрению, это увы необходимая мера для защиты от спама. Но можно сделать так - после регистарции свяжитесь со мной по емейл indey@bk.ru - мы снимем для вашего аккаунта это ограничение. Спасибо!

    С уважением, Павел.

    ОтветитьУдалить
  4. Андрей, спасибо за статью. Мы на самом деле собираем интересные статьи по LabVIEW. Если у Вас нет желания или возможности разместить её у нас в Портале, то разрешите сделать это мне от Вашего имени, естесственно с ссылкой на оригинал.
    С уважением, Евгений.

    ОтветитьУдалить
  5. Евгений, спасибо за отклик. Всё, что здесь было или будет написано, Вы можете использовать без каких-либо ограничений в некоммерческих целях. Просто укажите моё авторство и всё. К сожалению у меня времени свободного обычно не бывает, так что если Вы найдёте минутку для размещения, и это принесёт кому-нибудь пользу, то это будет замечательно.

    Спасибо, Андрей.

    ОтветитьУдалить
  6. Grand Victoria Casino - Mapyro
    Located 경상남도 출장안마 near 김천 출장샵 Grand Victoria Casino, we 용인 출장안마 have plenty of casino games including 창원 출장샵 slots, blackjack, poker, bingo, roulette, 의정부 출장샵 video poker, and poker.

    ОтветитьУдалить