通过字符串搜索文件时会发生什么情况,我可以尝试继续 catch块中的循环以锁定Windows文件,以便读取下一个文件。
TextReader rff = null;
try
{
rff = new StreamReader(fi.FullName);
String lne1 = rff.ReadToEnd();
if (lne1.IndexOf(txt) >= 0)
{
z = fi.FullName;
list22.Add(fi.FullName);
答案 0 :(得分:2)
只要异常被嵌套在循环内的try-catch捕获,你应该能够continue
循环没问题。
答案 1 :(得分:1)
我会说你会在循环中访问文件的语句中有一个try-catch。然后你可以在捕获任何异常后继续循环。
答案 2 :(得分:0)
在捕获异常时尝试仅捕获可能抛出的最特定的异常,因此如果您希望处理锁定情况,您将看到捕获System.IO.IOException,这是在其他人使用文件时引发的。 proccesses。
答案 3 :(得分:0)
如果你要做一些清理工作,你应该添加一个:
foreach (var fileName in fileNames)
{
var fi = new FileInfo(fileName);
StreamReader reader;
try
{
reader = new StreamReader(fi.FullName);
SomeMethodThatThrowsIOException();
}
catch (IOException ex)
{
continue;
}
finally
{
if (reader != null)
reader.Close();
}
}
甚至更好(因为StreamReader实现了IDisposable)
foreach (var fileName in fileNames)
{
try
{
var fi = new FileInfo(fileName);
using (var reader = new StreamReader(fi.FullName))
{
SomeMethodThatThrowsIOException();
}
}
catch (IOException ex) { }
}