异常旨在处理意外情况,而不是控制应用程序流。在输入验证期间使用异常可能会影响应用程序的可读性和性能。
使用异常进行流控制,尤其是在循环或经常调用的代码中,可能会导致严重的性能瓶颈。它还使代码难以理解。
就系统资源而言,异常确实非常昂贵,因为当触发异常时,.Net 运行时会捕获堆栈跟踪,并且该过程会占用大量资源。
try
{
int.Parse(input); // Attempt to parse input
}
catch (FormatException)
{
// Handle the invalid input
}
请在下面找到上一个代码片段的重构版本
if (int.TryParse(input, out int result))
{
// Use the parsed value
}
else
{
// Handle the invalid input
}
上述代码尝试解析控制台提供的输入,并返回一个布尔值,无论它是成功还是失败。
创建另一个名为的类,并添加以下代码片段AvoidExceptions
public static class AvoidExceptions
{
public static void BadWay(string input)
{
// Inefficient way: Using exceptions for flow control
try
{
int number = int.Parse(input);
Console.WriteLine($"You entered (Exception method): {number}");
}
catch (FormatException)
{
Console.WriteLine("Invalid input! Please enter a valid integer.");
}
}
public static void GoodWay(string input)
{
// Efficient way: Using TryParse for flow control
if (int.TryParse(input, out int result))
{
Console.WriteLine($"You entered (TryParse method): {result}");
}
else
{
Console.WriteLine("Invalid input! Please enter a valid integer.");
}
}
}
#region Day 24: Avoid Exceptions in Flow Control
static string ExecuteDay24()
{
Console.WriteLine("Enter a number:");
string input = Console.ReadLine();
AvoidExceptions.BadWay(input);
AvoidExceptions.GoodWay(input);
return "Executed Day 24 successfully..!!";
}
#endregion
Invalid input! Please enter a valid integer.
Invalid input! Please enter a valid integer.
源代码获取:公众号回复消息【code:58125
】