Передача переменной в исключение catch()
Сейчас я работаю с исключением try{} catch(){} и хочу изменить переменную. Для этого моя плата должна подключиться к Интернету, и с помощью инструкции try{} она попытается это сделать. Если это не удается, я просто хочу установить переменные в 0.
try {
timeClient.update();
ntp_seconds = timeClient.getSeconds();
ntp_minutes = timeClient.getMinutes();
ntp_hours = timeClient.getHours();
}
catch () {
ntp_seconds = 0;
ntp_minutes = 0;
ntp_hours = 0;
}
Я получаю эту ошибку: Ошибка компиляции: ожидаемый спецификатор типа перед токеном ')' Я знаю, что мне каким-то образом нужно передать свои переменные в "функцию" catch(). но почему-то я не могу передавать переменные, как с обычными функциями.
@NE555, 👍1
Обсуждение2 ответа
IDE Arduino не поддерживает конструкцию обработки исключений C++ try/catch и явно отключает эту функцию. Подробнее см.: https://forum.arduino.cc/t/try-catch/180063. объяснение.
как IDE отключает его? команды сборки находятся в файле platform.txt каждой платформы. сообщение на форуме от 2013 года, возможно, устарело, @Juraj
Возможно, вы захотите освежить свои знания об операторе try
-catch
, прочитав соответствующую главу в своей книге по C++.
Вам нужно объявить параметр исключения в catch
, который вы можете игнорировать:
try {
timeClient.update();
ntp_seconds = timeClient.getSeconds();
ntp_minutes = timeClient.getMinutes();
ntp_hours = timeClient.getHours();
}
catch (exception& ignored) {
ntp_seconds = 0;
ntp_minutes = 0;
ntp_hours = 0;
}
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
- Разница между этими двумя платами NodeMCU?
Эта конструкция try/catch не будет работать с Arduino C++: https://forum.arduino.cc/t/try-catch/180063., @6v6gt
ХОРОШО. Мне больше нечего сказать, поэтому я представлю это как ответ., @6v6gt
Кроме того, почему вы думаете, что клиент NTP выдаст исключение?, @romkey