在C++中,operator()
通常用于定義函數對象的調用操作。為了處理異常,您可以在operator()
內部使用try-catch
語句來捕獲和處理異常。下面是一個簡單的示例:
#include <iostream>
#include <functional>
#include <stdexcept>
class MyFunctor {
public:
int operator()(int a, int b) {
try {
if (b == 0) {
throw std::runtime_error("Division by zero");
}
return a / b;
} catch (const std::runtime_error& e) {
std::cerr << "Caught exception: " << e.what() << std::endl;
return -1; // 返回一個錯誤碼,表示發生了異常
}
}
};
int main() {
MyFunctor myFunctor;
int result = myFunctor(10, 0); // 這里會拋出異常
if (result == -1) {
std::cout << "An exception occurred" << std::endl;
} else {
std::cout << "Result: " << result << std::endl;
}
return 0;
}
在這個示例中,我們定義了一個名為MyFunctor
的類,它重載了operator()
以執行除法操作。在operator()
內部,我們使用try-catch
語句捕獲可能的異常。如果除數為零,我們拋出一個std::runtime_error
異常。在catch
塊中,我們捕獲異常并輸出錯誤信息,然后返回一個錯誤碼(在這里是-1)以表示發生了異常。
在main
函數中,我們創建了一個MyFunctor
對象并調用它。由于除數為零,將拋出異常。我們檢查返回值是否為-1,以確定是否發生了異常,并相應地輸出錯誤信息。