qri*_*kko 2 c++ xml error-handling exception
我试图围绕异常和更多我想他们能做什么,更重要的是他们应该和不应该做什么.
所以,我将举例说明我如何思考一个非常具体的问题,并希望人们能够保佑或抨击我所拥有的想法.
我正在读取xml文件的设置,所以我可能有设置,但也有特定设置可能不在那里的情况,这会产生一些麻烦和很多"点错误处理"或者叫什么,类型:(观察:这不是"真正的代码",而只是一些伪的东西,希望能说明我的观点).
if (xml.attribute("some_attrib")) {
settingForSomeAttrib = xml.attribute("some_attrib")->value();
} else {
settingForSomeAttrib = "some default value";
}
Run Code Online (Sandbox Code Playgroud)
所以这将给我带来一个或多或少的检查和任务 - 我想做的任何事情,这是不可取的.
然后我在思考,或许我可以完成所有操作,取出任何出错的地方并将其交给默认值,稍微尝试一下即可,任何无法解决的问题我们将事后处理.
引导我去 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!
}
Run Code Online (Sandbox Code Playgroud)
希望有某种意义,或者至少可以遵循我的思路.我觉得并不是真的如何使用异常.
我在想,我的问题有点像这样:
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");
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |