我把try/catch放在哪里;使用“;陈述

本文关键字:使用 陈述 在哪里 try catch 我把 | 更新日期: 2023-09-27 17:57:50

可能重复:
try/catch+使用正确的语法

我想try/catch以下内容:

//write to file
using (StreamWriter sw = File.AppendText(filePath))
{
    sw.WriteLine(message);
}

我是将try/catch块放在using语句内部,还是放在它周围,或者两者都放?

我把try/catch放在哪里;使用“;陈述

如果catch语句需要访问using语句中声明的变量,那么internal是您唯一的选择。

如果catch语句在释放之前需要using中引用的对象,那么内部是您唯一的选择。

如果您的catch语句执行了一个持续时间未知的操作,例如向用户显示消息,并且您希望在此之前处理掉您的资源,那么外部是您的最佳选择。

每当我有类似的场景时,try-catch块通常在调用堆栈的另一个方法中。对于一个方法来说,知道如何像这样处理其中发生的异常是不常见的。

所以我的总体建议是在外面——在外面。

private void saveButton_Click(object sender, EventArgs args)
{
    try
    {
        SaveFile(myFile); // The using statement will appear somewhere in here.
    }
    catch (IOException ex)
    {
        MessageBox.Show(ex.Message);
    }
}

我想这是首选方式:

try
{
    using (StreamWriter sw = File.AppendText(filePath))
    {
        sw.WriteLine(message);
    }
}
catch(Exception ex)
{
   // Handle exception
}

如果您仍然需要try/catch块,那么using语句并不能为您带来太多好处。放弃它,改为这样做:

StreamWriter sw = null;
try
{
    sw = File.AppendText(filePath);
    sw.WriteLine(message);
}
catch(Exception)
{
}
finally
{
    if (sw != null)
        sw.Dispose();
}