2014-01-29 55 views
0

我有一些代碼試圖在我們的網絡上打開一個文件,我試圖做的是將其放入try-catch塊中,並且遇到問題。當我嘗試運行我的代碼時,出現錯誤:名稱'readProfile'在當前上下文中不存在(CS0103)。嘗試打開文本文件時讀取

我知道,因爲我在try | catch塊的TRY中定義了streadreader對象(readProfile),所以我無法訪問該對象,但我不知道如何解決該問題。我試圖做的是如果我無法打開文件(例如,如果有其他人打開它),則會發生錯誤。這裏是我的代碼:

 try { 
      StreamReader readProfile = new System.IO.StreamReader(ProDirectory.ToString() + @"\" + myProFile.ToString()); 
     } catch (Exception ex) { 

      datalogger.Fatal(DateTime.Now.ToString() + ": Error while attempting to read file - " + ProDirectory.ToString() + @"\" + myProFile.ToString() + " The error is - " + ex.ToString()); 
     } 

如果我刪除try | catch塊,代碼運行良好,做我期望的。

回答

1

您可以定義變量的嘗試外,然後裏面實例化它們:

StreamReader readProfile; 
try 
{ 
    readProfile = new System.IO.StreamReader(ProDirectory.ToString() + @"\" + myProFile.ToString()); 
} 
catch (Exception ex) 
{ 
    datalogger.Fatal(DateTime.Now.ToString() + ": Error while attempting to read file - " + ProDirectory.ToString() + @"\" + myProFile.ToString() + " The error is - " + ex.ToString()); 
    // whatever you want to do with readProfile here. Of course, if the issue was that it couldn't create it, it still won't have been created... 
} 
+1

正確的,因爲一個直接的答案,但不是一個好的模式/做法。至少在catch塊添加一個'throw;'。 –

+0

那麼,由於「使用未分配的本地變量」readProfile'「錯誤,在訪問catch塊內的readProfile時,無法執行」想要的任何操作「。 – AlexD

0

在try塊外聲明StreamReader,但將賦值留給它。