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

时间:2012-01-26 22:23:35

标签: c#

我有这段代码:

       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块不起作用?

2 个答案:

答案 0 :(得分:9)

  

为什么catch块不起作用?

catch块工作正常,只是你在Visual Studio调试器中看到它。这就是first chance exception的含义。调试时,所有异常都显示在VS中,只是如果你有一个正确的catch子句,第一次机会异常可能会消失。顺便说一句,configure VS不要向他们展示。

哦,只是旁注:在.NET 4.0中有Enum.TryParse方法,因此您甚至不需要在此特定代码段中trycatch

答案 1 :(得分:1)

第一次机会通知只是让调试器知道引发了异常 - 这发生在考虑任何catch帧之前。所以简而言之,您的例外(可能)被抓住了。