C++面向物件入門(五十)異常的逐層傳遞
阿新 • • 發佈:2020-09-09
異常的逐層傳遞:如果在catch塊內捕捉到一個異常, 但是該塊內程式碼無法或者不想處理它,
可以繼續丟擲給上層呼叫者處理, 直至到最外層的封閉try塊
程式碼示例:
#include <iostream> #include <string> #include <fstream> using namespace std; /* 異常的逐層傳遞:如果在catch塊內捕捉到一個異常, 但是該塊內程式碼無法或者不想處理它, 可以繼續丟擲給上層呼叫者處理, 直至到最外層的封閉try塊 */ void funcOfNo70() throw (string); voidtest1OfMEH(); ofstream log_no70("log_no70.txt", ios::app); int main() { try { funcOfNo70(); } catch (...) { log_no70 << "catch a exception and handle it." << endl; } log_no70.close(); return 0; } void funcOfNo70() throw(string) { try { test1OfMEH(); }catch (string) { log_no70 << "catch a string type exception!" << endl; log_no70 << "throw a domain type exception!" << endl; throw; } } void test1OfMEH() { log_no70 << "throw a string type exception!" << endl; throw string(); }