I wish I had done it right from the start -- then exceptions would have been classes from the start and would have required inheritance from the Exception base class. Like in Java. (And in C++?)
In C++ you can throw anything at all. Strings, ints, that Warsaw blockhead...