尝试/ catch +使用,正确的语法

哪一个:

using (var myObject = new MyClass())
{
   try
   {
      // something here...
   }
   catch(Exception ex)
   {
      // Handle exception
   }
}

要么

try
{
   using (var myObject = new MyClass())
   {
      // something here...
   }
}
catch(Exception ex)
{
   // Handle exception
}

我更喜欢第二个。 也可以捕捉与创建对象有关的错误。


由于使用块只是try / finally(MSDN)的语法简化,因此我个人会采用以下方法,但我怀疑它与第二个选项有很大不同:

MyClass myObject = null;
try {
  myObject = new MyClass();
  //important stuff
} catch (Exception ex) {
  //handle exception
} finally {
  if(myObject is IDisposable) myObject.Dispose();
}

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

如果您的catch语句需要在使用前引用的对象,那么inside就是您唯一的选择。

如果你的catch语句采取了一个持续时间不明的行为,比如向用户显示一条消息,并且你希望在这种情况发生之前处理你的资源,那么外部是你最好的选择。

每当我有一个与此类似的scenerio时,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);
    }
}
链接地址: http://www.djcxy.com/p/21129.html

上一篇: try/catch + using, right syntax

下一篇: Can I catch multiple Java exceptions in the same catch clause?