Right now solidity has exceptions, but no way to 'catch' them. Ordinary function calls automatically propagate exceptions when there's a problem. But, unintuitively, `send` behaves differently.
It would be trivial to modify `send` in Solidity so that it automatically throws an exception, like in Listing 3. But that's also often an anti-pattern, since it would allow the 'loser' to prevent the 'winner' from ever getting the money back. Sometimes it's important to keep on executing even if the `send` fails.
So once Solidity supports `catch`, that would help.
Uncaught exceptions and unhandled errors means the transaction validation failed, and it is invalid. If the transaction script on the other hand is set to deal with them and try something else instead, it might still succeed (there can be multiple alternate conditions that may independently grant right to transfer the coins).