I can understand the basic intention to keep things simple. Of your three concerns:
* This "internal" template method can be moved to the cpp.
* what problems are there with exceptions?
I like the templated method more, but if you want, I will switch.