我有以下内容class exception
:
namespace A{
namespace B{
namespace C{
class internal_error : public std::runtime_error{
public:
explicit internal_error(const std::string &arg) : std::runtime_error(arg) {};
};
}
}
}
在我的代码中,我有:
try{
if(mkdipath(dirname, DIR_CREATION_MODE, &err)){
string msg;
msg = "failed to create path " + *dirname;
logmsg(MSERROR, msg.c_str(), who);
throw A::B::C::internal_error(msg);
}
}
catch(){
// how am I going to catch a A::B::C::internal_error?
}
我的问题是:我将如何捕获 A::B::C::internal_error?我应该使用:
catch(A::B::C::internal_error &error){
string msg("You should never had happened\n");
logmsg(MSERROR, msg.c_str(), who);
}
请忽略标签MSERROR
, who
, mkdirpath
... 它们对问题并不重要。