On Mon, 12 Sep 2011 10:42:46 +1200 "Gavin Lambert" <[email protected]> wrote: > Quoth Chris Vine: > > try { > > std::cout << "DB - Password: " << password << std::endl; > > } > > catch (Glib::Exception& e) { > > std::cerr << e.what().raw() << std::endl; > > } > > catch (std::exception& e) { > > std::cerr << e.what() << std::endl; > > } > > If you're going to catch exceptions as references (which you should), > make sure you catch them as const references. Otherwise they may not > catch all throw cases.
The exception throwing mechanism always copies the thrown exception object as a non-const object, in C++98/03 at least, so it shouldn't make any difference to the things caught; and to specify 'const' means that only const methods of the exception object can be called in the catch block (I realise that what() is a const method). Section 4.3 of TC++PL (3rd Edition) says: "In addition, we can add const to the type used to catch an exception in the same way that we can add it to a function parameter. This doesn't change the set of exceptions we can catch; it only restricts us from modifying the exception caught." Has this changed in C++11? If so, what additional excptions will a const type in the catch statement cover which a non-const type will not, under the new standard? (I have a copy of the draft standard so if you can point me to the paragraph concerned that would be very helpful - it is always nice to learn new things.) Chris _______________________________________________ gtkmm-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gtkmm-list
