Re-learning how to throw C++ exceptions