gpt4 book ai didi

c++ - 也许我误解了 C++ 异常?

转载 作者:数据小太阳 更新时间:2023-10-29 02:50:06 28 4
gpt4 key购买 nike

我正在努力思考异常,更多的是我猜测它们可以做什么,更重要的是它们应该做什么和不应该做什么。

所以,我将举例说明我是如何思考一个非常具体的问题的,并希望人们要么祝福要么抨击我的想法。

我正在从 xml 文件中读取设置,所以我可能有这些设置,但也存在特定设置可能不在其中的情况,这会产生一些麻烦和很多“点错误” -handling”或如何调用它,属于以下类型:(请注意:这不是“真实代码”,而只是一些伪代码,希望能说明我的观点)。

if (xml.attribute("some_attrib")) {
settingForSomeAttrib = xml.attribute("some_attrib")->value();
} else {
settingForSomeAttrib = "some default value";
}

所以这会让我或多或少地为我想做的每件事和任何事情留下支票和任务,这是不可取的。

然后我在想,也许我可以遍历这一切,获取任何出错的东西并将其传递给默认值,稍微尝试一下让它正确,任何没有解决的问题我们都会处理之后..

引领我进入一种try/catch 的思维方式。

然后我在想也许我可以做一个 try block :

try {
setting1 = xml.attribute("attr1")->value(); // throws some kind of "attr1" exception?
setting2 = xml.attribute("attr2")->value(); // -||- "attr2" exception?
} catch (???) {
//go through the things which went wrong and set them settings straight!
}

希望这有某种意义,或者至少可以遵循我的思路。我觉得这并不是真正意义上的异常使用方式。

我认为我的问题是这样的:

1) 异常是否可以像这样使用或者这只是一个坏主意?2) 人们通常如何在 C++ 中处理此问题以获得在检查有效性时不臃肿的代码?

谢谢。

最佳答案

我当然不会使用异常来处理仅仅是可选的设置。

相反,我会按照以下几行做一些事情:

string getString(const XML& xml, const string& attrib, const string& defaultAttrib) {
if (xml.attribute(attrib)) {
return xml.attribute(attrib)->value();
} else {
return defaultAttrib;
}
}

...
setting1 = getString(xml, "attrib1", "attrib1_default");
...

关于c++ - 也许我误解了 C++ 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13590223/

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