В других операциях, например if... else, вы можете избежать привязок, если в блоке есть только одна команда, вы не можете сделать это с помощью try... catch блоков: компилятор не покупает его. Например:
try
do_something_risky();
catch (...)
std::cerr << "Blast!" << std::endl;
С приведенным выше кодом g++ просто говорит, что ожидает '{' перед do_something_risky(). Почему эта разница в поведении между try... catch и, скажем, if... else?
Спасибо!