
And of course you can catch these some layers higher and transform these exceptions into the needed ones. e.g. void scan_directories(fs::path const& path) { //.... } void do_smth() { //... } void foo() { scan_directories("c:“); } void rethow_my_exception(std::exception const& e) { //could be throw std::logic_error(std::string("execution failed: ").append(e.what())); } //you can even overload rethrow_my_exception for different formattings void bar() { try { foo(); do_smth(); } catch(std::exception const& e) { rethrow_my_exception(e); } } As you see, there are no limits. Good Luck, Ovanes On Wed, Apr 29, 2009 at 4:26 PM, Ovanes Markarian <om_boost@keywallet.com>wrote:
On Wed, Apr 29, 2009 at 3:20 PM, Max <more4less@sina.com> wrote:
Hello Ovanes,
Thanks for your reply.
You means like this?
catch ( const fs::basic_filesystem_error<fs::path>& e ) { // transform e.what() to a new string by search and replace // rethrow an exception }
That would be ok for this single case. But who knows if there's other similar cases that need this similar hand-written code processing? I want to depress the similar message in a uniform way.
You can also catch more general exceptions like: boost::system_error or std::runtime_error or std::exception (or any other unknown exception via catch(...) )
And handle them...
Regards, Ovanes