2016-10-07 9 views
0

我在Azure存儲容器中有許多xml。我編寫了代碼去除這些xmls中不必要的數據元素。要列出我使用的不同文件夾結構中的所有xmls當存在Catch塊中的異常時,繼續到ForEach塊中的下一個blob

var blobs = container.ListBlobs(prefix: <Root Location of Blobs>, useFlatBlobListing: true); 
foreach (CloudBlockBlob blob in blobs) 

並解析xml我使用Linq。

我面臨的問題是有幾個xml缺少適當的格式或幾個沒有關閉文字的xml。我想捕獲異常並從處理中跳過該xml文件並繼續下一個。我怎樣才能使用Try catch塊?

我得到的例外是System.Xml.XmlException

回答

-1

嘗試

foreach (CloudBlockBlob blob in blobs){    
      bool isError = false; 
      try 
      {       
       // do your code here; 
      }catch(Exception ex){ 
       isError = true; 
      } 
      if(isError) continue; 
     } 

更新:

void Main() 

    { 
     string[] list = new string[]{"bob", "jack", "tom", "sparrow"}; 
     foreach(string li in list){ 
      try{ 
       if(String.Equals(li, "tom")){ 
        throw new Exception("Fault"); 
       } 
       Debug.WriteLine(li); 
      }catch(Exception ex){ 
       Debug.WriteLine(ex.Message); 
       continue; 
      } 
     } 
    } 

打印:

bob 
jack 
Fault 
sparrow 
+0

是不需要整個ISERROR標誌。 –

+0

@PeterBons:那麼當前一個有異常時,我該如何繼續下一個blob? – HadoopAddict

+0

如果您在foreach循環內部放置一條try/catch語句,那就沒問題。所以按照這個答案沒有isError的東西,它會自動跳過失敗的blob。 –