保留異常來源信息 在C++中,無論何時在處理程序內捕獲一個異常,關於該異常來源的信息都是不為人知的。異常的具體來源可以提供許多更好地處理該異常的重要信息,或者提供一些可以附加到錯誤日志的信息,以便以後進行分析。 為了解決這一問題,可以在拋出異常語句期間,在異常對象的構造函數中生成一個堆棧跟蹤。ExceptionTracer是示范這種行為的一個類。 清單 1. 在異常對象構造函數中生成一個堆棧跟蹤 // Sample Program: // Compiler: gcc 3.2.3 20030502 // Linux: Red Hat #include #include #include #include using namespace std; ///////////////////////////////////////////// class ExceptionTracer { public: ExceptionTracer() { void * array[25]; int nSize = backtrace(array, 25); char ** symbols = backtrace_symbols(array, nSize); for (int i = 0; i < nSize; i++) { cout