我试图将我的头脑围绕着异常,我猜想他们可以做什么,更重要的是他们应该做什么和不应该做什么。
所以,我将举一个例子来说明我是如何思考一个非常具体的问题的,并希望人们会祝福或抨击我的想法。
我正在从 xml 文件中读取设置,所以我可能有这些设置,但也存在特定设置可能不存在的情况,这会产生一些麻烦和很多“点错误处理”或者叫什么,类型:(注意:这不是“真正的代码”,而只是一些伪代码,希望能说明我的观点)。
if (xml.attribute("some_attrib")) {
settingForSomeAttrib = xml.attribute("some_attrib")->value();
} else {
settingForSomeAttrib = "some default value";
}
所以这会让我或多或少地为我想做的每件事和任何事情留下支票和分配,这是不可取的。
然后我在想,也许我可以通过这一切,获取任何出错的东西并将其交给默认值,有点只是尝试让它正确,任何不成功的东西我们会在之后处理..
引导我进行一种try/catch
思考。
然后我在想也许我可以做一个尝试块:
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++ 中进行此操作以获取在检查有效性时并不臃肿的代码?
谢谢。