溫馨提示×

c++ operator()如何處理異常

c++
小樊
90
2024-11-19 12:55:43
欄目: 編程語言

在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,以確定是否發生了異常,并相應地輸出錯誤信息。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女