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 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