Linux環(huán)境下的c++異常處理機(jī)制,依賴于try、catch和throw三個關(guān)鍵字。當(dāng)程序運(yùn)行中出現(xiàn)錯誤時,可以使用throw拋出異常,try塊中的代碼若發(fā)生異常則會跳轉(zhuǎn)到相應(yīng)的catch塊進(jìn)行處理。
基本步驟:
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; }
- 程序繼續(xù)執(zhí)行: 如果異常被成功處理,程序?qū)⒗^續(xù)執(zhí)行try-catch塊之后的代碼。
示例:
#include <iostream> #include <stdexcept> int main() { int a = 10; int b = 0; try { if (b == 0) { throw std::runtime_error("除數(shù)不能為零!"); } int result = a / b; std::cout << "結(jié)果: " << result << std::endl; } catch (const std::runtime_error& error) { std::cerr << "錯誤: " << error.what() << std::endl; } std::cout << "程序繼續(xù)執(zhí)行..." << std::endl; // 即使發(fā)生異常,這行代碼也會執(zhí)行 return 0; }
編譯和運(yùn)行:
立即學(xué)習(xí)“C++免費學(xué)習(xí)筆記(深入)”;
使用g++編譯器編譯代碼:
g++ -o myprogram myprogram.cpp
然后運(yùn)行可執(zhí)行文件:
./myprogram
這個例子演示了如何使用std::runtime_error處理除零錯誤。 error.what()方法可以獲取異常的描述信息。 程序在發(fā)生異常后,仍然能夠繼續(xù)執(zhí)行后續(xù)代碼,體現(xiàn)了異常處理機(jī)制的健壯性。