打开文本文件进行读取时尝试catch

时间:2014-01-29 22:18:15

标签: c# .net

我有一些代码试图在我们的网络上打开一个文件,而我想要做的就是把它放到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块,代码运行正常并按照我的预期进行。

2 个答案:

答案 0 :(得分:1)

您可以在try之外定义变量,然后在其中实例化它们:

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 :(得分:0)

在try块之外声明StreamReader,但将赋值保留在其中。