当出现异常时,我想确保在创建阅读器后关闭阅读器。所以我想在这个 try and catch 中包含一个 finally 括号。但是我不能在 finally 括号中关闭它,除非我在 try 括号上方声明了读者。但是如果我这样做了,我在创建阅读器时就不会捕捉到任何异常。我不确定是否关闭读者有多重要。
XmlSerializer xmlSr = new XmlSerializer(typeof(List<ProjectObject>));
try
{
FileStream reader = new FileStream(mTextFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
List<ProjectObject> addProjects = (List<ProjectObject>)xmlSr.Deserialize(reader);
mSharedDriveLocalProjects = addProjects;
reader.Close();
}
catch
{
MessageBox.Show("Failed to load XML file");
}
Run Code Online (Sandbox Code Playgroud)
以上是我的代码。用这种方式更好吗?
XmlSerializer xmlSr = new XmlSerializer(typeof(List<ProjectObject>));
FileStream reader = new FileStream(mTextFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
try
{
List<ProjectObject> addProjects = (List<ProjectObject>)xmlSr.Deserialize(reader);
mSharedDriveLocalProjects = addProjects;
}
catch
{
MessageBox.Show("Failed to load XML file");
}
finally
{
reader.Close();
}
Run Code Online (Sandbox Code Playgroud)
该using语句是这里解决这些难题
XmlSerializer xmlSr = new XmlSerializer(typeof(List<ProjectObject>));
using(FileStream reader = new FileStream(mTextFilePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
try
{
List<ProjectObject> addProjects = (List<ProjectObject>)xmlSr.Deserialize(reader);
mSharedDriveLocalProjects = addProjects;
}
catch
{
MessageBox.Show("Failed to load XML file");
}
}
Run Code Online (Sandbox Code Playgroud)
在 using 语句中声明和创建的任何一次性对象都在块的出口处被处理(调用对象的 dispose 方法,该方法通常负责清理所有内容,包括文件的关闭)
请注意,using 语句类似于 try/finally,因此如果您想捕获异常并向您的用户显示一条错误消息或将其记录在某处,您仍然需要在代码周围明确准备一个 try/catch 块。
| 归档时间: |
|
| 查看次数: |
1600 次 |
| 最近记录: |