c#write to file try catches

时间:2016-05-04 19:30:41

标签: c# try-catch

此代码非常有效。没问题。

问题是我想在它周围放一个try catch块。这就是我想出的。可以任何建议更多的捕获?或者它的方式很好吗?

String strFileLine1 = "This is a folder that will be used by the Virtual Flashcard program.";
String strFileLine2 = "Please do not delete.";
String myFilePath; 
.
.
.
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.FileName = "FlashCard.txt";
saveFile.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFile.ShowDialog();

myFilePath = Path.GetDirectoryName(saveFile.FileName);
label2.Text = myFilePath;

try
{
    using (StreamWriter fileWrite = new StreamWriter(saveFile.FileName))
    {
        fileWrite.WriteLine(strFileLine1);
        fileWrite.WriteLine(strFileLine2);
    }
}
catch (Exception ex)
{
    MessageBox.Show("There is a problem");
}

2 个答案:

答案 0 :(得分:2)

总结这个讨论。来自@Erresen,“你目前正在抓住当前捕获的所有异常。”

如果您不希望/需要根据收到的特定异常执行某些操作,这很好。

然而,正如@Johny Mopp所提到的,ObjectDisposedException和IOException是潜在的异常。也许,如果您有IOException,您将需要创建一个警报并通知用户该方法无法访问该文件,它被阻止或等待一段时间再次尝试该文件。但是对于ObjectDisposedException,您唯一的选择可能是通知用户该操作是不可能的。因此,您需要单独捕获异常并适当地处理它们。

答案 1 :(得分:0)

感谢那些给予建设性批评和帮助的人。对其他人......

以下是我提出的代码

SaveFileDialog saveFile = new SaveFileDialog();
saveFile.FileName = "FlashCard.txt";
saveFile.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFile.ShowDialog();

myFilePath = Path.GetDirectoryName(saveFile.FileName);
label2.Text = myFilePath;

try
{
    using (StreamWriter fileWrite = new StreamWriter(saveFile.FileName))
    {
        fileWrite.WriteLine(pushUp.StrFileLine1);
        fileWrite.WriteLine(pushUp.StrFileLine2);
    }
}
catch (IOException ex)
{
    MessageBox.Show(pushUp.StrIOExcepion);
}
catch (ObjectDisposedException ex)
{
    MessageBox.Show(pushUp.StrObjectDisposedException);
}
catch (Exception ex)
{
    MessageBox.Show(pushUp.StrException);
}