try/catch block in Arduino

arduino, try-catch

Solution

The Arduino reference is not listing `try catch` (for details of why see, for example, this related answer). And I assume, that implementing try catch on a µ-controller could be kind of difficult/impossible.

Try catch in most languages is a quite expensive operation: The program stack get copied once for the try block and for each catch block. In case the try goes wrong the try-block stack will be discarded and one of the catch block stacks will be executed. I am not an expert of cpu architecture, but I can imagine, that this needs a lot of memory swapping and similar operations — it should be hard to achieve with a simple µ-controller.

It might worth to look how C-Programmers do patterns similar to try/catch

Problem

I am working with socket communication in Arduino, and I need the try/catch block for proper handling, what do you guys suggest? My search on the internet wasn't successful. edit: The code I am working with uses the WiFly module to interact with a mobile application, I am building a robot module with some controls over mobile application using Android. Everything works just fine, but sometimes the socket gets disconnected, so I need to add handling for such cases, something similar to try/catch block, but I didn't find similar block for Arduino. My code: ``` void loop() { Client client = server.available(); if (client) { while (client.connected()) { if (client.available()) { // Serial.print("client connected \n"); char c = client.read(); if(c == 'L') turnLeft(); if(c == 'R') turnRight(); if(c == 'F') goForward(); if(c == 'B') goBackward(); if(c == 'S') Stop(); Serial.print(c); } } // give the web browser time to receive the data delay(100); client.stop(); } } ```

Original source

Related problems