請看看演示代碼:一些問題有關異常處理
class myError
{
const char* str;
public:
myError():str(NULL) {}
myError(const char* temp)
{
str = temp;
}
const char* what()
{
return str;
}
};
class ab
{
int x;
public:
ab() try :x(0)
{
throw myError("error occured in the constructor of class ab");
}
catch(myError& temp)
{
std::cout<<"Handler no. 1 of ab constructor"<<std::endl;
}
};
int main() try
{
ab bb;
cout << "Resumed execution!" << endl;
return 0;
}
catch(myError& temp)
{
std::cout<<"Handler below the main function"<<std::endl;
std::cout<<"And the error is :" <<temp.what();
}
我的問題:構造函數的
- 爲什麼只有功能try塊的處理器和析構函數只rethows例外呢? ,
,當你簡單地拋出內部構造函數的異常,其處理程序不會重新拋出的對象?即
Ctor::Ctor()
{
try{
throw Excep1();
}
catch(Excep1& temp) {
std::cout<<"Doesn't rethrows the exception object";
}
}
我想知道如何恢復控制權交還給
cout << "Resumed execution!" << endl;
,處理重新拋出對象後?爲什麼經常說,我們不應該把功能try塊在析構函數的基類的?
的析構函數,你的意思析構函數? – MGZero
@ MGZero:是) –
我看不出在你的代碼中重新拋出。你只是捕捉例外。 – VestniK