A couple throw semantics

There were two cases in which a thrown exception from a constructor
resulted in a delete of the new'ed object - which is incorrect!  Any
exceptions thrown out of a constructor will clean up memory for the
object before returning to the catcher.

Also missed a place where an exception type had updated from int to
runtime_error, and would not have been caught properly.