我在哪里将try / catch与“using”语句放在一起?
可能重复:
try / catch + using,正确的语法
我想try/catch
以下内容:
//write to file using (StreamWriter sw = File.AppendText(filePath)) { sw.WriteLine(message); }
我是否将try/catch
块放在using
语句中,或者在它周围? 或两者?
如果您的catch语句需要访问using语句中声明的变量,那么inside是您唯一的选择。
如果你的catch语句在处理之前需要使用中引用的对象,那么inside是你唯一的选择。
如果您的catch语句采取了未知持续时间的操作,例如向用户显示消息,并且您希望在此之前处置您的资源,那么外部是您的最佳选择。
每当我有一个类似于此的scenerio时,try-catch块通常采用与使用中调用堆栈相同的不同方法。 对于方法来说,知道如何处理在其中发生的exception是不常见的。
所以我的一般推荐是在外面的外面。
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(); }