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