在C++中,工廠模式用于創建對象,但是在處理異常情況時,需要謹慎處理。以下是一些建議:
std::exception
,這樣可以方便地處理工廠模式中可能出現的異常情況。class FactoryException : public std::exception {
public:
explicit FactoryException(const std::string& message) : message_(message) {}
const char* what() const noexcept override {
return message_.c_str();
}
private:
std::string message_;
};
class ProductFactory {
public:
static std::unique_ptr<Product> createProduct(const std::string& type) {
if (type == "ProductA") {
return std::make_unique<ProductA>();
} else if (type == "ProductB") {
return std::make_unique<ProductB>();
} else {
throw FactoryException("Invalid product type: " + type);
}
}
};
int main() {
try {
auto product = ProductFactory::createProduct("ProductC");
} catch (const FactoryException& e) {
std::cerr << "Error: " << e.what()<< std::endl;
}
return 0;
}
通過這種方式,您可以在工廠模式中處理異常情況,確保程序在遇到錯誤時能夠正常運行。