roscpp throws exceptions only in truly unexpected, programmer error conditions. All of roscpp's exceptions inherit from a common ros::Exception base class.
Thrown if an invalid base name is passed to ros::init(), usually because it has a / in it
0.10-: Thrown if a name beginning with a ~ is passed to any NodeHandle method.
0.11+: Thrown if an invalid name is passed to any roscpp function.