c# - 如果当前行抛出异常,如何执行下一行代码
问题描述
我有一定的要求。当前行代码抛出异常时,我想移至下一行
FileStream fs = new FileStream("D:/temp/product.xml", FileMode.Open, FileAccess.Read);
有时D:/
驱动器没有xml
文件,它会抛出FileNotFoundException
和跳跃控制超出范围。但是在下一行我想检查另一个位置
FileStream fs = new FileStream("//letp.rf.servername.com/products/product.xml", FileMode.Open, FileAccess.Read);
我该如何解决这个问题?
解决方案
使用防御检查,File.Exists(String)
在实际访问之前先使用方法检查文件是否存在。同样,我们应该尽可能使用防御性检查而不是异常处理,因为异常处理是昂贵的操作。C# 中的异常有多昂贵?
最后,您可以将其完全包装在一个try .. catch
块中,以确保捕获任何其他异常并记录它们。
try
{
if (File.Exists("D:/temp/product.xml"))
{
FileStream fs = new FileStream("D:/temp/product.xml", FileMode.Open, FileAccess.Read);
}
else
{
// check another location
}
}
catch (Exception ex)
{
// perform logging
}
推荐阅读
- reactjs - 如何在 mapStateToProps 中转换异步数据?
- javascript - 更改脚本添加的标记样式
- reactjs - 如何从 react-static 生成的站点地图文件中删除页面?
- amazon-web-services - aws logs:指定的日志组不存在
- html - 将 div 拆分为网格或多个 div 的任何方式
- python - 查找最接近列表目标总和的数字
- reactjs - 如果名称上有空格,则无法打开弹出窗口
- java - IntelliJ IDEA新建项目时自动创建的文件和文件夹有哪些
- uikit - 如何确定哪些 NSCollectionViewItems 是实际可见的
- excel - Excel VBA 缩短代码以将值从一个范围复制到另一个范围