首页 > 解决方案 > 如果当前行抛出异常,如何执行下一行代码

问题描述

我有一定的要求。当前行代码抛出异常时,我想移至下一行

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);

我该如何解决这个问题?

标签: c#.net

解决方案


使用防御检查,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
}

推荐阅读