try/catch block in Arduino

Arduino doesn't support exception handling. However, you don't need to use exception handling to make your code robust. By simply checking the return values of functions that can fail you can achieve the same end.

Since client.connected() is checked every time around the loop, and since client.available() will return 0 if not connected the only possible failure that is not already being handled is the return from client.read().

You can fix this, for example, by changing the line:

char c = client.read();

to:

int i = client.read();
if (i == -1) {
    break;
}
char c = (char) i;

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