C# 存在System.ArgumentException的捕获块,但无论如何都不会捕获异常,为什么?

C# 存在System.ArgumentException的捕获块,但无论如何都不会捕获异常,为什么?,c#,C#,我有以下代码: if (typeof(Enum).IsAssignableFrom(typeof(T))) { try { return (T)Enum.Parse(typeof(T), text); } catch (ArgumentException e) { return def

我有以下代码:

       if (typeof(Enum).IsAssignableFrom(typeof(T)))
        {
            try
            {
                return (T)Enum.Parse(typeof(T), text);
            }
            catch (ArgumentException e)
            {
                return default(T);
            }
        }
但是,我收到了以下例外情况:

mscorlib.dll中发生类型为“System.ArgumentException”的第一次意外异常 其他信息:未找到请求的值“ABC”

这怎么可能?为什么
catch
块不工作

为什么挡块不起作用

catch
块工作得非常好,只是您正在VisualStudio调试器中查看它。这就是a的意思。调试时,所有异常都显示在VS中,只是如果有适当的
catch
子句,第一次出现的异常可能会消失。顺便说一句,你不能给他们看


哦,还有一个附带说明:在.NET 4.0中,有一种方法,因此在这个特定的代码段中,您甚至不需要
尝试
捕获

第一次通知只是让调试器知道抛出了异常-这发生在考虑任何捕获帧之前。因此,简而言之,您的异常(可能)被捕获。

这样的代码
T result=default(T);Enum.TryParse(文本,输出结果)不起作用,因为类型t必须不可为空