C#,未捕获 NullReferenceException

C#, NullReferenceException is not catched

提问人: 提问时间:11/22/2022 更新时间:11/22/2022 访问量:55

问:

下午好。我不明白,为什么没有调用块“catch”,而是程序停止使用 NullReferenceException。

            string? nullable_string_1 = null;
            try
            {
                string non_nullable_string_1 = (string)nullable_string_1;
                System.Console.WriteLine(non_nullable_string_1.Length);
            }
            catch (System.NullReferenceException nullReferenceException)
            {
                System.Console.WriteLine($"There is an invalid operation exception with message: \"{nullReferenceException.Message}\"");
            }
C# 异常 try-catch nullreferenceexception

评论

0赞 11/22/2022
问题中的代码捕获 NullReferenceException(在此处是导致 NRE 的唯一候选者)。没有两种方法。无论您遇到什么问题导致您提出这个问题,都不存在于您在问题中提出的代码中。non_nullable_string_1.Length
0赞 YungDeiza 11/22/2022
我已经运行了这段代码,它确实捕获了异常。
1赞 PaulF 11/22/2022
当我运行您的代码时,它对我来说工作正常。如果你在Visual Studio中运行,那么默认情况下,调试器将首先捕获异常,如果你关闭该窗口并继续,代码将继续到catch块。
0赞 11/22/2022
谢谢。但你为什么要破坏我的名声?

答:

1赞 Rajdeep Das 11/22/2022 #1
using System;

public class Program
{
    public static void Main()
    {
        string? nullableString = null;
        try
        {
            string nonNullableString = (string)nullableString;
            Console.WriteLine(nonNullableString.Length);
        }
        catch (NullReferenceException nullReferenceException)
        {
            Console.WriteLine($"There is an invalid operation exception with message: \"{nullReferenceException.Message}\"");
        }

        Console.WriteLine("After Exception Code Run");
    }
}

输出 - 它正在工作 [1]:https://i.stack.imgur.com/66Qum.png