2013-05-18 30 views
2

不知道這裏有多少代碼是必需的。我正在嘗試創建一個try塊,它不包含處理XML文件的所有代碼。如果我無法讀取XML文件,我在這裏得到一個UnauthorizedAccessException例外:如何處理XmlReader的異常。創建

XmlReader xmlIn = XmlReader.Create(configFile, settings); 

但後來我有我所有的代碼讀取XML和因爲xmlIn是在try塊的其餘我的方法中的代碼無法看到它。我想過,也許創建一個默認的XmlReader:

XmlReader xmlIn = null; 

try塊之前,只是扔在try塊的初始化,但該方法應該返回一個包含某些字符串的自定義對象和使該代碼應該在該部分之後運行以拋出NullReferenceException異常。

我搜索了一會兒,我能想出的最好的是,認爲這是更好地處理異常,而不是測試事先的文件,這是訪問以下我在想什麼嘗試:how can you easily check if access is denied for a file in .NET?

所以我有點被困在適當的方式來處理這個代碼,我認爲這將是非常平凡的。我是否只將方法中的所有內容放入try塊中,在調用此方法的代碼部分中使用try,還是有更好的方法來處理?

回答

0
XmlReader reader=null; 
    try 
    { 
      //reader.Create code 
    } 
    catch 
    { 
     //your exception code 
    } 

    if(reader!=null) 
    { 
     //other tasks 
    } 
+0

好的,所以我所有涉及讀者的任務都應該在try塊內,即使我正在從XML讀取一堆元素? – LazarusG

+0

對不起,讓我再補充一點。我所閱讀的所有「最佳實踐」信息在try塊中始終只有非常少量的代碼或方法。我想我只是不確定有多少代碼對於try塊來說太多了,因爲其中可能會引發其他意外的異常。 – LazarusG

+0

問題是,當代碼在try塊後遇到reader時,編譯器會拋出錯誤,因爲所有代碼路徑都沒有初始化變量。因此,您將不得不首先將null分配給變量。我不能說最佳做法,但這將起作用。 –