我有以下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?
}
我的問題是:我應該如何去趕上答: :B ::ç:: 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
......他們不是這個問題很重要。
此代碼無效嗎? – robert 2012-07-27 13:17:04
刪除internal_error之前的_,所以它成爲A :: B :: C :: internal_error – fbafelipe 2012-07-27 13:17:44
我刪除了......我的問題是:我是否正確地做到了? – cybertextron 2012-07-27 13:18:23