1. 程式人生 > 實用技巧 >C++面向物件入門(五十)異常的逐層傳遞

C++面向物件入門(五十)異常的逐層傳遞

異常的逐層傳遞:如果在catch塊內捕捉到一個異常, 但是該塊內程式碼無法或者不想處理它,
可以繼續丟擲給上層呼叫者處理, 直至到最外層的封閉try塊

程式碼示例:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

/*
異常的逐層傳遞:如果在catch塊內捕捉到一個異常, 但是該塊內程式碼無法或者不想處理它, 
可以繼續丟擲給上層呼叫者處理, 直至到最外層的封閉try塊
*/

void funcOfNo70() throw (string);

void
test1OfMEH(); 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(); }