各位大侠,写了个函数
static IEnumerable<String> ReadFile(String fileName)
{
try
{
reader=new StreamReader(fileName);
for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
yield return line;
}
catch(IOException e)
{
Console.WriteLine(e.Message);
}
finally
{
if(reader!=null)
reader.Close();
}
}
编译通不过,在包含catch子句的try模块里不能用yield return,有没有办法即可以捕捉异常又可以用yield return啊?或是有什么替代的办法??谢谢各位啦!
static IEnumerable<String> ReadFile(String fileName)
{
try
{
reader=new StreamReader(fileName);
for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
yield return line;
}
catch(IOException e)
{
Console.WriteLine(e.Message);
}
finally
{
if(reader!=null)
reader.Close();
}
}
编译通不过,在包含catch子句的try模块里不能用yield return,有没有办法即可以捕捉异常又可以用yield return啊?或是有什么替代的办法??谢谢各位啦!
先判断是否会触发IOException异常,如果会则 throw
否则yield return line;
{
StreamReader reader = null;
int flag = 0;
string line = "";
try
{
reader = new StreamReader(fileName);
}
catch(IOException e)
{
Console.WriteLine(e.Message);
flag = 1;
}
if (flag != 1)
{
for (line = reader.ReadLine(); line != null; line = reader.ReadLine())
yield return line;
}
else
{
yield return line;
}
改成这样,可以运行了,但总感觉有粗制滥造之嫌:(