天天看點

<More Effective C++>筆記--異常

  1. struct B 
  2.     virtual void say(){cout<<"this is "<<typeid(*this).name()<<endl;} 
  3. }; 
  4. struct D:public B 
  5. }; 
  6. int main() 
  7.     try{ 
  8.         D d; 
  9.         B& rb = d; 
  10.         rb.say();      //this is D1 
  11.         throw rb;      //這裡抛出的是rb的拷貝,類型位B 
  12.     }catch(B& b) 
  13.     { 
  14.         b.say();       //this is B1 
  15.     } 
  1. catch (Widget& w)                 // 捕獲Widget異常 
  2. ...                             // 處理異常 
  3. throw;                          // 重新抛出異常,讓它 
  4. }                                 // 繼續傳遞 
  5. catch (Widget& w)                 // 捕獲Widget異常 
  6. ...                             // 處理異常 
  7. throw w;                        // 傳遞被捕獲異常的 
  8. }                                 // 拷貝 

繼續閱讀