在C++中,異常處理是一種非常重要的編程技巧,它可以幫助我們在程序運行過程中發生錯誤時,優雅地處理這些錯誤,而不是讓程序直接崩潰。C++的異常處理機制主要包括以下幾個關鍵部分:
異常類(Exception Class):C++標準庫提供了一些基本的異常類,如std::exception
、std::runtime_error
等。你也可以自定義異常類,繼承自std::exception
或其他異常類。
拋出異常(Throwing Exceptions):當程序中發生錯誤時,可以使用throw
關鍵字拋出一個異常對象。這將導致程序立即跳轉到相應的異常處理代碼。
捕獲異常(Catching Exceptions):為了處理拋出的異常,需要使用try
和catch
語句。try
塊中的代碼是可能拋出異常的代碼,而catch
塊則包含處理異常的代碼。當try
塊中的代碼拋出異常時,程序會跳轉到與該異常類型匹配的catch
塊。
異常處理函數(Exception Handling Functions):有時候,你可能希望在多個地方處理同一種類型的異常。這時,你可以將異常處理代碼封裝成一個函數,并在catch
塊中調用這個函數。
下面是一個簡單的C++異常處理示例:
#include<iostream>
#include <stdexcept>
class MyException : public std::runtime_error {
public:
MyException(const std::string& message) : std::runtime_error(message) {}
};
void handleException(const std::exception& e) {
std::cerr << "Error: " << e.what()<< std::endl;
}
int main() {
try {
throw MyException("This is a custom exception");
} catch (const MyException& e) {
handleException(e);
} catch (const std::exception& e) {
handleException(e);
}
return 0;
}
在這個示例中,我們首先定義了一個自定義異常類MyException
,繼承自std::runtime_error
。然后,我們在main
函數中使用try
和catch
語句來捕獲并處理異常。注意,我們還定義了一個名為handleException
的異常處理函數,用于在多個地方處理異常。