Understanding exception support in C++