如果處理節點X是可選的,然後你的代碼應該看起來像:
if(node X exists in file)
{
do work with X
}
,而不是:
try
{
do work with X
}
catch{}
現在,如果沒有辦法來確定是否節點X存在比其他嘗試使用它,或者如果在檢查節點X是否有可能之後刪除節點X,那麼您不得不使用try/catch模型。這不是這裏的情況。 (與之相反,在閱讀文件之前檢查文件是否存在;有人可以在檢查文件後檢查它是否存在)
---------------- --------------------------------------------
編輯:
因爲看起來您的問題是訪問節點「grandchild」在下面的XML中可能不存在'父'。 (請原諒我在SO中渲染這種XML的能力差;知識豐富的讀者可以自由地以適當的格式編輯。)
<root>
<Parent>
<Child>
<GrandChild>
The data I really want.
</GrandChild>
</Child>
</Parent>
</root>
對於我會做這樣的事情:
public static class XMLHelpers
{
public static Node GetChild(this Node parent, string tagName)
{
if(parent == null) return null;
return parent.GetNodeByTagName(tagName);
}
}
然後,你可以這樣做:
var grandbaby = rootNode.GetChild("Parent").GetChild("Child").GetChild("GrandChild");
if(grandbaby != null)
{
//use grandbaby
}
請勿將異常用於流量控制。把空的支票放在裏面。 – cadrell0 2012-04-06 20:44:45
@ cadrell0 - 這是我的觀點之一,如果有幾個空檢查,那很好,但如果你有100個檢查。 – Xaisoft 2012-04-06 20:45:54
@ Xaisoft然後放入100s – cadrell0 2012-04-06 20:46:18