gpt4 book ai didi

main 中的 C++ 异常

转载 作者:行者123 更新时间:2023-11-30 01:28:22 27 4
gpt4 key购买 nike

我的类(class) Person 有不同的文件作为属性。

class Person {
private:
fstream history;
fstream familyTree;
public:
Person() {
history.open("history.dat");
familyTree.open("tree.dat");
}
}

如果无法打开任何文件,我需要我的程序返回不同的值。

如果history没有打开,返回1,如果familyTree没有打开,返回2。

1) 使用异常是唯一的解决方案吗?

2)异常在哪里启动?

3)如果我在main中捕获异常是错误的吗?

最佳答案

您可以在构造函数中抛出异常并在 main 中捕获它们。或者您可以在构造函数中捕获异常并修复它,以便无论发生什么情况都可以正确初始化该类。

为了使您的类更易于测试,构造函数应该做尽可能少的工作。我有两种方法:

bool readHistory (std::string fileName)
bool readFamillyTree (std::string fileName)

而不是在构造函数中尝试这样做。如果文件可以读取并且是正常的,它们将返回 true。您可以有一个重载的构造函数来调用这些方法。正如评论中指出的那样,构造函数应该返回一个可用的对象。我假设这些文件不是对象运行所必需的。这可能是错误的。

关于main 中的 C++ 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7613082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com