在C++中,函數(shù)對象(也稱為仿函數(shù)或functor)是一種可以像函數(shù)一樣被調(diào)用的對象。要在C++函數(shù)對象中進行異常處理,您需要遵循以下步驟:
std::exception
或其派生類(如std::runtime_error
)作為異常類型。#include <exception>
class MyFunctor {
public:
void operator()() {
// ... function body
}
private:
std::exception_ptr exceptionPtr;
};
throw
關(guān)鍵字拋出異常。將異常對象分配給類的異常成員變量。void MyFunctor::operator()() {
try {
// ... function body
if (/* some error condition */) {
throw std::runtime_error("An error occurred");
}
} catch (...) {
exceptionPtr = std::current_exception();
}
}
try-catch
塊捕獲可能拋出的異常。如果函數(shù)對象拋出異常,exceptionPtr
將包含異常對象的指針。int main() {
MyFunctor functor;
try {
functor();
} catch (const std::exception& e) {
std::cerr << "Caught exception: " << e.what() << std::endl;
}
return 0;
}
這樣,您就可以在C++函數(shù)對象中進行異常處理了。請注意,這種方法允許您在函數(shù)對象中捕獲異常并將其傳遞給調(diào)用者。如果您希望在函數(shù)對象內(nèi)部處理異常,可以在catch
塊中處理異常,而不將其傳遞給調(diào)用者。