当前位置: 首页 > 知识库问答 >
问题:

如果我可以简单地修复错误,为什么要使用try/catch?[重复]

裴俊智
2023-03-14

我不明白try and get中错误处理的含义。(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?

共有1个答案

孔飞翔
2023-03-14

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

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

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

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

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

 类似资料:
  • 但测试失败..为什么?(因为我的接球盖帽里没有投球)。但我不想扔任何东西,我只想它有能力去接住。那么有没有可能进行测试呢?

  • 问题内容: 作为开发人员,我与E_NOTICE一起工作。不过最近,有人问我为什么应该修复E_NOTICE错误。我能提出的唯一理由是纠正这些问题的最佳实践。 还有其他人有任何理由证明纠正这些问题所花费的额外时间/成本吗? 更具体地说,如果代码已经起作用,为什么经理应该花钱修复这些问题? 问题答案: 摘要 在PHP运行时配置文件给你一些想法,为什么: 在开发过程中启用E_NOTICE有一些好处。 出于

  • 我知道如果我们有这样的try-catch设置: 如果中存在错误,捕获错误将触发。 根据我的理解,如果我们尝试像这样的catch设置: 如果中存在错误,则不会触发捕获错误,因为该函数将在以后运行。 我不明白的是,当我们使用wait时,为什么catch错误不会触发: 如果这次异步函数中出现错误,并且由于javascript引擎正在等待它完成运行,为什么在出现错误时它不能捕获错误呢。 编辑1: 第二个功

  • 我需要将12小时的时间转换为24小时的格式。 我现在已经把12小时的时间硬编码了,以使事情更简单。 我的逻辑:输入sting 07:05:45PM提取最后2个字符。如果AM check为前两个字符,则为12。。如果是,则将其设置为00,否则按原样输出,如果PM检查前两位数字是否为12。。如果是,请保持原样,如果不是,则在前2位加上12 总线错误:10是我运行代码得到的

  • 例如: 将在Kotlin中编译,但在Java中会出现编译器错误。为什么?

  • 我试图理解,如果可以使用,是什么让并发锁如此重要。在下面的伪代码中,我可以执行以下任一操作: 同步整个方法或同步脆弱区域(