.NET C#基础教程第24天:避免流控制中的异常

作者:微信公众号:【架构师老卢】
6-10 9:40
27

概述:介绍异常旨在处理意外情况,而不是控制应用程序流。在输入验证期间使用异常可能会影响应用程序的可读性和性能。学习目标异常使用效率低下使用 TryParse 的更好方法开发人员的先决条件基本了解 C# 编程语言。开始异常使用效率低下使用异常进行流控制,尤其是在循环或经常调用的代码中,可能会导致严重的性能瓶颈。它还使代码难以理解。就系统资源而言,异常确实非常昂贵,因为当触发异常时,.Net 运行时会捕获堆栈跟踪,并且该过程会占用大量资源。try {     int.Parse(input); // Attempt to parse input } catch (FormatException)

介绍

异常旨在处理意外情况,而不是控制应用程序流。在输入验证期间使用异常可能会影响应用程序的可读性和性能。

学习目标

  • 异常使用效率低下
  • 使用 TryParse 的更好方法

开发人员的先决条件

  • 基本了解 C# 编程语言。

开始

异常使用效率低下

使用异常进行流控制,尤其是在循环或经常调用的代码中,可能会导致严重的性能瓶颈。它还使代码难以理解。

就系统资源而言,异常确实非常昂贵,因为当触发异常时,.Net 运行时会捕获堆栈跟踪,并且该过程会占用大量资源。

try  
{  
    int.Parse(input); // Attempt to parse input  
}  
catch (FormatException)  
{  
    // Handle the invalid input  
}

使用 TryParse 的更好方法

请在下面找到上一个代码片段的重构版本

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.");  
        }  
    }  
}

从 main 方法执行,如下所示

#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

相关代码下载地址
重要提示!:取消关注公众号后将无法再启用回复功能,不支持解封!
第一步:微信扫码关键公众号“架构师老卢”
第二步:在公众号聊天框发送code:58125,如:code:58125 获取下载地址
第三步:恭喜你,快去下载你想要的资源吧
阅读排行