class exception { ... }; // 來(lái)自標(biāo)準(zhǔn)C++庫(kù)(STL) // 中的異常類層次 void someFunction() { static exception ex; // 異常對(duì)象 ... throw &ex; // 拋出一個(gè)指針,指向ex ... } void doSomething() { try { someFunction(); // 拋出一個(gè) exception* } catch (exception *ex) { // 捕獲 exception*; ... // 沒(méi)有對(duì)象被拷貝 } } |
void someFunction() { exception ex; // 局部異常對(duì)象; // 當(dāng)退出函數(shù)的生存空間時(shí) // 這個(gè)對(duì)象將被釋放。 ... throw &ex; // 拋出一個(gè)指針,指向 ... // 已被釋放的對(duì)象 } |
void someFunction() { ... throw new exception; // 拋出一個(gè)指針,指向一個(gè)在堆中 ... // 建立的對(duì)象(希望 } // 自己不要再拋出一個(gè) // 異常!) |