我有这段代码:
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
块不起作用?
答案 0 :(得分:9)
为什么catch块不起作用?
catch
块工作正常,只是你在Visual Studio调试器中看到它。这就是first chance exception的含义。调试时,所有异常都显示在VS中,只是如果你有一个正确的catch
子句,第一次机会异常可能会消失。顺便说一句,configure VS不要向他们展示。
哦,只是旁注:在.NET 4.0中有Enum.TryParse方法,因此您甚至不需要在此特定代码段中try
和catch
。
答案 1 :(得分:1)
第一次机会通知只是让调试器知道引发了异常 - 这发生在考虑任何catch帧之前。所以简而言之,您的例外(可能)被抓住了。