2010-04-14 82 views

回答

2
try 
{ 
yourXmlDocument.LoadXML("xml is here"); 
}catch{ 
//It has failed. 
} 

你可能是更具體的,只有從loadXML的捕獲錯誤

try 
{ 
    yourXmlDocument.LoadXML("xml is here"); 
}catch(System.Xml.XmlException e){ 
    //It has failed. 
} 
0

你可以簡單地在代碼周圍放一個try/catch,並對產生的異常做任何事情。

0

如果例外是遠程,就像你說的,你只得到了消息的字符串版本或結果,那麼你將無法使用它的異常處理機制。然而,如果你認識到琴絃並且做了一些事情,你可能會把它們拼湊在一起。

如果你得到Exception對象,那麼你可以在它上面pull out the good old try/catch stuff

1

永遠不要忽略異常。這些「我確信我可以放心地忽略這個」有時會導致最糟糕和最難找到的錯誤。

總是至少記錄異常。也可以使用Debug.Fail方法,它將在調試版本中顯示一個包含異常詳細信息的對話框 - 這將幫助您更好地診斷大多數問題。

在這種特殊情況下(XML解析),當數據沒有被正常發現而沒有捕獲和忽略異常時,當然有辦法處理這種情況 - 隨意編輯答案以向我們展示確切的xml解析方法你正在使用,我們可以告訴你如何避免例外。

因爲你可能會問一個通用的情況下,這是你如何處理異常,如果你想「忽略」他們(如果你不希望他們顯示給用戶):

try 
{ 
    //do something that throws an exception 
} 
catch(Exception ex) //or even better: catch a specific exception type 
{ 
    //do not ignore the exception, at least log it 
    System.Diagnostics.Debug.Fail(ex.Message, ex.ToString()); 
    log.Debug("Probably expected error happened: " + ex.ToString()); 
} 
1

那麼,爲了回答你的問題,如果你把你的代碼放在TryCatch塊中,然後對於有問題的異常,只需簡單地捕捉它並不做任何事情。

這就是說,爲什麼不只是在處理時檢查空標記而不是依賴異常處理呢?與檢查條件相比,異常處理通常具有更多的開銷,並且如果存在可能不存在某些情況的預期情況,則應該在代碼中處理該情況。

4

我該如何忽略c#中的異常?

不要。

例外情況是試圖告訴你,你的代碼有問題。

如果您收到的XML解析過程中的異常,因爲一個特定的元素不存在,那麼代碼改寫爲檢查試圖讀取它之前的元素是否存在


如果你問如何處理一個特定的異常,那麼您可以在一個try-catch塊包裝它:

XmlDocument doc = new XmlDocument(); 
try 
{ 
    doc.Load(url); 
} 
catch (XmlException) 
{ 
    // Handle the error here 
    return (default value); 
} 
// Start going through the XmlDocument 

上面的代碼將處理特定情況下XML是格式不正確。但是,如果XML是格式良好的,但是由於特定的元素不存在,並且您認爲它會發生異常,則代碼將拋出異常,則根本不要使用異常處理代碼;只需在嘗試閱讀之前檢查它是否存在。

+0

檢查一個巨大的XML文件有時可能是地獄> _ <你有屬性,看起來像XML代碼,但實際上是在XML屬性中的文本我喜歡zac effron」/>關閉標籤,自動關閉標籤或被稱爲等...尋找錯誤並自己找到它們是您想要做的事情。然而,你將會遇到的複雜性(以及所有可能出現的情況)可能比使用try/catch所帶來的小開銷更糟糕。當然,那只是我的意見... – Warty 2010-04-14 19:47:51

+0

@ItzWarty:如果XML格式錯誤,那是真的。但是這個問題似乎強烈暗示XML已經被加載到DOM或XmlReader中,並且代碼只是假設存在的元素不存在。 – Aaronaught 2010-04-14 19:49:07

+0

您是否有定義XML的模式?如果是這樣,爲什麼不以此爲起點進行驗證。限制例外和處理個別元素問題的需要。 – 2010-04-14 19:49:52