cha*_*r m 0 file-io dispose idisposable using c#-2.0
想一想:
StreamReader reader = null;
try
{
reader = new StreamReader(_fileName);
}
catch
{
//show error that file not found
reader.Dispose();
return false;
}
try
{
//code to read file
}
catch
{
//show error badly formed file
}
finally
{
reader.Dispose();
}
//return
Run Code Online (Sandbox Code Playgroud)
当无法打开文件时,上面的代码不起作用,因为它调用Dispose for null导致异常.
我不想使用因为我想分开打开文件和阅读它的问题.这可以通过百万种不同的渔获量实现,但我不想这样做.另外如果使用与try-finally相同,那么"隐藏Dispose"会抛出不需要的异常吗?当我需要的只是捕获异常打开它并读取异常时,这将是最好的方法吗?
谢谢和BR - 马蒂
最好使用以下using
声明:
using(StreamReader reader = new StreamReader(_fileName))
{
}
Run Code Online (Sandbox Code Playgroud)
编译器将为您创建正确的dispose语义.
你仍然可以使用try
它,而不用担心自己处理它:
try
{
using(StreamReader reader = new StreamReader(_fileName))
{
try
{
//code to read the file
}
catch
{
//show error badly formed file
}
}
}
catch
{
// show error that file not found
}
Run Code Online (Sandbox Code Playgroud)