vb.net - 在发生异常期间如何在 StreamWriter 之后进行清理?

标签 vb.net visual-studio

我正在尝试在发生异常后进行清理,但我不确定如何处理 StreamWriter。

Dim sw As StreamWriter

Try 
    ''// stuff happens

    somethingBad1() ''//Sometimes throws an exception

    sw = New StreamWriter(File.Open("c:\tmp.txt", FileMode.Create))

    ''// stuff happens

    somethingBad2() ''//Also sometimes throws an exception

    sw.Write("Hello World")
    sw.Flush()  ''//Flush buffer
    sw.Close()  ''//Close Stream

Catch ex As Exception
    sw = Nothing       
Finally
    sw = Nothing       
end try

如果somethingBad1抛出异常,我不需要对sw做任何事情;但是,如果 somatignBad2 发生,则 sw 已经创建,我需要关闭它。但是我如何知道 sw 是否已创建?

最佳答案

''//stuff happens but you don't care because you didn't instantiate 
''//              StreamWriter yet
somethingBad1() ''//Sometimes throws an exception

Using sw As New StreamWriter("test.dat")
    ''// stuff happens
    somethingBad2() ''//Also sometimes throws an exception
    ''//as you are in a using statement the sw.Dispose method would be called
    ''//which would free the file handle properly
    sw.Write("Hello World")
End Using

关于vb.net - 在发生异常期间如何在 StreamWriter 之后进行清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1374787/

相关文章:

vb.net - 该进程无法访问该文件,因为它正被另一个进程使用

sql-server - VB,我一直收到用户登录失败...当我尝试连接到 sql server 数据库时

c++ - MSVS/MSVC 静态模板类方法不警告

visual-studio - Team Foundation (TFS 2010) 文件夹隐藏 - 服务器端替代方案?

c# - AJAX CascadingDropDown ViewState问题

c# - 从 aspx 页面访问代码隐藏中的对象

vb.net - 在 VBA 中复制工作表复制错误

c++ - 在 Visual C++ 2010 中执行前先执行 bat 脚本

c++ - 什么是 list 文件?

c++ - 表达式 : cannot increment value-initialized iterator (Error in Debug, 但不在 Release模式下 - Visual Studio)