在异常处理中循环
本文关键字:循环 异常处理 | 更新日期: 2023-09-27 18:12:45
我做了一个简单的程序。我想为try
, catch
语句添加循环,这样如果用户写输入,他会得到一个错误消息,程序让他再写一次。
Console.WriteLine("Enter The File Location");
string userValue = Console.ReadLine();
try
{
string content = File.ReadAllText(userValue);
Console.WriteLine(content);
}
catch (FileNotFoundException ex)
{
Console.WriteLine("There was a Problem");
Console.WriteLine(ex.Message);
}
catch (DirectoryNotFoundException ex)
{
Console.WriteLine("There was a Problem");
Console.WriteLine("Could not find the Directory");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
您可以将代码包装在while
循环中,该循环重复代码,直到成功完成操作。
var success = false;
while (success == false)
{
Console.WriteLine("Enter The File Location");
string userValue = Console.ReadLine();
try
{
string content = File.ReadAllText(userValue);
Console.WriteLine(content);
success = true;
}
catch (FileNotFoundException ex)
{
Console.WriteLine("There was a Problem");
Console.WriteLine(ex.Message);
}
catch (DirectoryNotFoundException ex)
{
Console.WriteLine("There was a Problem");
Console.WriteLine("Could not find the Directory");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
当您能够检查无效输入时,通常最好这样做,而不是让异常发生。在您的情况下,您可以根据用户的输入检查File.Exists(…)和/或Directory.Exists(…)。您可以将这些作为循环语句的条件,以便继续提示用户,直到他们使用正确的目录和文件。然而,我认为这并不一定是最好的用户体验,因为您希望他们知道是一个有效的文件和目录,而他们可能并不知道。当然,您应该提供一种方法让它们退出循环。
当用户输入完成时(当您检测到Enter键或有完整的命令或其他情况时),我会使用带有指定条件的while结构。然后,您可以在不满足该条件时循环(并且没有不可恢复的错误),并使用上面的代码检查用户错误并在需要时打印消息。
不需要循环。你可以使用递归函数。试试这个:https://dotnetfiddle.net/4NR26P