从正在使用的块引发异常
本文关键字:异常 | 更新日期: 2023-09-27 18:27:53
我有以下代码:
try{
using (StreamReader reader = new StreamReader(...), Encoding.ASCII)){
// Code that can throw an exception
}
}catch (Exception error){
// Display error...
}
如果从using
块中抛出异常,StreamReader
会发生什么?
我应该在关闭流的位置添加finally
子句吗?
StreamReader将由使用自动处理,因为它本质上是一个嵌套的try/finaly:
try{
StreamReader reader = new StreamReader(...), Encoding.ASCII);
try {
// Code that can throw an exception
} finally {
reader.Dispose();
}
} catch (Exception error) {
// Display error...
}
我应该在关闭流的地方添加finally子句吗?
不,内在的using() {}
(本质上是一次尝试/最终)照顾着读者。
这个代码基本上是可以的。
using
块与在finally中调用.Dispose()
方法相同。StreamReader上的.Dispose()
调用.Close()
。
using (var reader = new StreamReader(...)) {
//do work
}
与…相同。。。
var reader = new StreamReader(...);
try {
//do work
}
finally {
reader.Dispose();
}
StreamReader
将被处理。你的代码很好。