Linux環境下的c++異常處理機制,依賴于try、catch和throw三個關鍵字。當程序運行中出現錯誤時,可以使用throw拋出異常,try塊中的代碼若發生異常則會跳轉到相應的catch塊進行處理。
基本步驟:
- try塊: 將可能引發異常的代碼放入try塊中。
try { // 潛在異常代碼 }
throw std::runtime_error("錯誤信息");
- catch塊: catch塊用于捕獲并處理異常。每個catch塊指定要捕獲的異常類型,并包含處理該類型異常的代碼。可以有多個catch塊處理不同類型的異常。
catch (const std::runtime_error& e) { // 處理std::runtime_error異常 std::cerr << "Error: " << e.what() << std::endl; } catch (int errNum) { // 處理int類型異常 std::cerr << "Integer Error: " << errNum << std::endl; }
- 程序繼續執行: 如果異常被成功處理,程序將繼續執行try-catch塊之后的代碼。
示例:
#include <iostream> #include <stdexcept> int main() { int a = 10; int b = 0; try { if (b == 0) { throw std::runtime_error("除數不能為零!"); } int result = a / b; std::cout << "結果: " << result << std::endl; } catch (const std::runtime_error& error) { std::cerr << "錯誤: " << error.what() << std::endl; } std::cout << "程序繼續執行..." << std::endl; // 即使發生異常,這行代碼也會執行 return 0; }
編譯和運行:
立即學習“C++免費學習筆記(深入)”;
使用g++編譯器編譯代碼:
g++ -o myprogram myprogram.cpp
然后運行可執行文件:
./myprogram
這個例子演示了如何使用std::runtime_error處理除零錯誤。 error.what()方法可以獲取異常的描述信息。 程序在發生異常后,仍然能夠繼續執行后續代碼,體現了異常處理機制的健壯性。