if (Easy)
{
try
{
reader = File.OpenText(@"../../TxtFiles/eneral_Easy.txt");
throw new FileNotFoundException();
}
catch (FileNotFoundException ex)
{
Console.WriteLine("Kan het bestand General_Easy.txt niet vinden!" + ex.Message);
}
}
else
{
reader = File.OpenText(@"../../TxtFiles/General_Hard.txt");
}
string line = reader.ReadLine();
while (line != null)
{
questionList.Add(line);
line = reader.ReadLine();
}
reader.Close();
NumberOfQuestions = questionList.Count;
答案 0 :(得分:1)
File.OpenText
将抛出异常。我不确定你为什么每次都抛出异常 - 你几乎可以肯定地删除它。
您捕获异常并写入消息,但您不会在此处停止执行。当你到达reader.ReadLine()
reader
时,从未实例化过null
。这就是你获得NullReferenceException
的原因。我怀疑你想在失败后才回来。
try
{
reader = File.OpenText(@"../../TxtFiles/eneral_Easy.txt");
}
catch (FileNotFoundException ex)
{
Console.WriteLine("Kan het bestand General_Easy.txt niet vinden!" + ex.Message);
return;
}
答案 1 :(得分:0)
try
{
reader = File.OpenText(@"../../TxtFiles/eneral_Easy.txt");
throw new FileNotFoundException();
}
无论文件是否实际读入,上面的代码都会抛出异常。
如果您想在找不到问题文件时将消息转储到控制台,那么您可以只是将异常和堆栈跟踪转储到控制台 - 而不是简单地将消息转移到控制台。不用尝试/捕捉让你的程序崩溃。
但是,如果你想实现一些功能,你设计程序来处理这样的异常并恢复,你可以这样做:
try
{
reader = File.OpenText(@"../../TxtFiles/eneral_Easy.txt");
}
catch (FileNotFoundException ex)
{
Console.WriteLine("Kan het bestand General_Easy.txt niet vinden!" + ex.Message);
var suggestedPath = /* logic to get possible path from another source */
reader = File.OpenText(path); // Will throw again if fails
}