I would very much prefer to keep the throwing within the constructor: http://www.parashift.com/c++-faq/ctors-can-throw.html.  It shouldn't be a problem anymore because I am changing the only heap allocated variable (db_) to be a non-pointer.