我有这个代码:
if (typeof(Enum).IsAssignableFrom(typeof(T)))
{
try
{
return (T)Enum.Parse(typeof(T), text);
}
catch (ArgumentException e)
{
return default(T);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到了以下例外:
mscorlib.dll中出现'System.ArgumentException'类型的第一次机会异常附加信息:未找到请求值'ABC'
怎么可能?为什么catch块不工作?
为什么捕获块不起作用?
该catch块工作正常,只是你在Visual Studio调试器中看到它.这是第一次机会异常的意思.调试时,所有异常都显示在VS中,只是如果你有一个正确的catch子句,第一次机会异常可能会消失.顺便说一句,你可以配置VS不显示它们.
哦,只是旁注:在.NET 4.0中有Enum.TryParse方法,所以你甚至不需要try和catch在这个特定的片段中.