08/06/05 16:45:18
usingをtry-finallyに展開してみる。
try {
readonly System.IO.FileStream fs = new System.IO.FileStream("data.xml", System.IO.FileMode.Open);
try { DataList = (ArrayList)serializer.Deserialize(fs); }
finally { fs.Dispose(); }
} catch(System.Exception e) {
MessageBox(e.ToString());
}
usingではcatchしてないからDeserializeで例外が起きた場合は外側のtry-catchブロックが補足する。
問題になるとすればcatchの段階でまだ開いている状態のfsにアクセスしたい場合。
Deserializeとfs.Dispose()の両方で例外が起きた場合。
こういったことが気になるなら、usingを使わずtry-catch-finally構造に変える。