c++ 異常處理機制依賴于 try、catch 和 throw 關鍵字。當程序遇到錯誤或異常情況時,這些關鍵字用于捕獲和處理異常。以下示例演示了基本用法:
#include <iostream> #include <stdexcept> int main() { try { // 拋出異常 throw std::runtime_error("發生錯誤"); } catch (const std::runtime_error& e) { // 捕獲并處理異常 std::cerr << "錯誤: " << e.what() << std::endl; } return 0; }
此例中,throw 拋出一個 std::runtime_error 異常。catch 塊捕獲該異常,并將錯誤信息打印到標準錯誤流。
Linux 環境下 C++ 異常處理與其他操作系統類似。但需注意,部分系統庫函數可能返回錯誤碼而非拋出異常。此時,需檢查函數返回值以判斷是否出錯。
Linux 信號處理也可能與異常處理相關聯。例如,未捕獲異常可能導致操作系統向程序發送信號(如 SIGABRT 或 SigsEGV)。可編寫信號處理函數來處理這些信號,執行清理操作,避免程序崩潰。以下示例演示信號處理:
立即學習“C++免費學習筆記(深入)”;
#include <csignal> #include <iostream> void signal_handler(int signal) { std::cerr << "捕獲到信號 " << signal << std::endl; // 執行清理操作 exit(1); } int main() { // 注冊信號處理函數 std::signal(SIGABRT, signal_handler); std::signal(SIGSEGV, signal_handler); // ... 程序其余部分 ... return 0; }
此例中,std::signal 函數注冊了 signal_handler 函數來處理 SIGABRT 和 SIGSEGV 信號。程序收到這些信號時,將調用 signal_handler 函數。