Суть кода выводить сообщения в телеграм. До недавного времени все работало успешно, теперь когда РКН блокирует сообщения. QUIK ПОЛНОСТЬЮ ВЫЛЕТАЕТ. Так как отсутствие коннекта к телеграму предсказать невозможно, то не возможно предсказать, когда вылетит терминал Quik. Нужно искать выход - обработать исключение!
if err==nil then err="" end -- до этого места доходит пока нет ошибок и в дебагер выдает нормальную информацию PrintDbgStr(tostring(status) .. " --- " .. err .. " --- " .. www) -- если ошибка в ссылке или тайаут, то квик вылетает и информации в дебагере нет!!!
Вопрос КАК заставить QLUA обработать исключение. Виды исключений : неправильная ссылка, не верный адрес, хост не доступен???
Проверял послюднюю часть кода в ZeroBrane Studio для Lua - успенно отрабатывает возвращает код ошибки и я могу его обработать. Помогите разобоаться
Артем написал: Виды исключений : неправильная ссылка, не верный адрес, хост не доступен???
Боюсь что кроме как предварительно установить проверку других идей нет. Проверку можно выполнить через тот же Ping У нас эта тема обсуждалась тут и тут
Артем написал: QUIK ПОЛНОСТЬЮ ВЫЛЕТАЕТ. Вопрос КАК заставить QLUA обработать исключение.
Если нужен дополнительный сетевой функционал, то можно попробовать поместить ваш код в небольшую отдельную DLL, которую уже вызывать из Lua. А если нужно просто выполнить http запрос к сайту, то проще наверно просто запустить IE с ним, в одну строчку:
Sergey Gorokhov написал: Боюсь что кроме как предварительно установить проверку других идей нет. Проверку можно выполнить через тот же Ping
Это не будет работать по многим причинам. Во-первых, в момент проверки соединение может ещё быть, а уже при повторном запросе нет, поэтому предварительная проверка ничего не гарантирует. Во-вторых, IP-адреса возвращаемые через DNS постоянно меняются сетью CDN, и тот который вернулся при вызове ping может не совпадать с тем, который вернулся при последующем соединении. И т.д...
Да и сам подход неправильный. Не должен Quik падать из-за необработанного исключения в подгружаемом модуле. Если это имеет место быть, то это серьёзный глюк, и его лучше исправить...
function send_telegram() --если true, то слать телеграм local handler = io.popen("chcp 861 && ping -n 1 api.telegram.org") local response = handler:read("*a") start_pos, end_pos = string.find(response, "Lost = 0" ) if start_pos==nil then telegram=false else telegram=true end return telegram end
Все бы ничего, при вызове io.popen каждый раз кратковременно командное окошко всплывает и перехватывает фокус ввода, то есть Quik на 1 -2 сек становится не главным окном, что очень не хорошо. Как это можно победить запихать вызов пингов в фоновое окно? Может кто уже побеждал?