-4

我不明白使用 try 和 catch 处理错误的意义。(C#) 在我的在线课程中,使用了以下示例:

class Program
{
    static void Main(string[] args)
    {

        try
        {
            int[] numbers = new int[3];

            numbers[1] = 0;
            numbers[2] = 1;
            numbers[3] = 2;
            numbers[4] = 3;
        }
        catch(IndexOutOfRangeException ex)
        {
            Console.WriteLine(ex.Message);
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);
        }


        Console.ReadKey();
    }
}

这是一个非常简单的例子,但我为什么要这样做呢?

我是新手……我正在学习编写 C# 代码……但我尝试以这种方式学习它,在最好的情况下根本不会发生错误。

为什么我会尝试捕获这样的异常而不是

run the programm -> "Ah there is a exeption" -> and then fix it?
4

1 回答 1

0

首先是一个小点,在 C# 数组中基于 0 索引意味着您应该从数字 [0] 开始。

在您的情况下, numbers[4] 将失败,但如果没有 try/catch,代码将立即停止。

大多数情况下,您希望记录应用程序中发生的错误,因此这是 try/catch 机制的第一个可能(并且广泛使用)的目的。

有时一个操作可能不足以停止程序。假设您要发送统计信息。如果无法发送统计信息(网络问题?),您不希望您的程序完全停止。

另一个需要更细粒度捕获的用例是例如重试机制。如果某些东西由于网络问题而崩溃,您可以在几秒钟后重试,但如果某些东西由于 IndexOutOfRangeException 而崩溃,这是一个会一次又一次发生的问题,所以甚至不需要重试(但您可能会记录它)。

于 2021-03-03T13:53:29.510 回答