今天使用boost庫,將輕鬆的解決這個問題。
先看看使用stl中的異常類的一般做法:
// 使用stl定義自己的異常
class myexception : public std::exception
myexception(const char * const & msg, int errcode):exception(msg, errcode)
};
voidtestexception()
catch(std::exception& e)
}boost庫的實現方案為:
//使用boost定義自己的異常
#include
class myexception : virtual public std::exception,virtual public boost::exception
;
//定義錯誤資訊型別,
typedef boost::error_info err_no;
typedef boost::error_info err_str;
voidtestexception()
catch(std::exception& e)
}boost庫將異常類和錯誤資訊分離了,使得錯誤資訊可以更加靈活,其中typedef boost::error_infoerr_no;
定義乙個錯誤資訊類,tag_err_no無實際意義,僅用於標識,為了讓同一型別可以例項化多個錯誤資訊類而存在。
class myexception : public std::exception{};
#include
typedef boost::error_info err_no;
typedef boost::error_info err_str;
voidtestexception()
catch(std::exception& e)
}有了boost的異常類,在丟擲異常時,可以塞更多的資訊了,如函式名、檔名、行號。
// 使用stl定義自己的異常我們幾乎不用修改以前的異常類,就能讓它提供更多的異常資訊。
boost庫下檔案處理庫 探索Boost檔案系統庫
c 語言 實際上是c 標準 最常見的問題之一是缺少定義明確的庫來幫助處理檔案系統查詢和操作。這種缺席導致程式設計師使用本機作業系統提供的應用程式介面 api 從而使 無法跨平台移植。考慮乙個簡單的情況 您需要確定檔案是否為目錄型別。在microsoft windows 平台中,可以通過呼叫windo...
(三)Boost庫之字串處理
字串處理一直是c c 的弱項,string algo庫很好的彌補了這一點。string algo 庫演算法命名規則 字首i 有這個字首表名演算法的大小寫不敏感,否則大小寫敏感 字尾 copy 有這個字尾表明演算法不變動輸入,返回處理結果的拷貝,否則演算法原地處理 字尾 if 有這個字尾表明演算法需要...
八 Python入門 異常處理
異常是乙個事件,該事件會在程式執行過程中發生,一般情況下,在python中無法處理程式時就會發生異常,當python指令碼發生異常時,我們需要捕獲並處理異常,否則程式就會終止執行 try 可能會出錯的語句 except exception as e 異常處理 常見的錯誤和異常 可能會報錯或出現異常的...