我有这个代码:
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
block 不起作用?
最佳答案
Why is the catch block not working?
catch
block 工作得很好,只是您在 Visual Studio 调试器中查看它。这就是first chance exception方法。当您调试时,所有异常都显示在 VS 中,只是如果您有适当的 catch
子句,第一次机会异常可能会消失。顺便说一句,你可以configure VS不要给他们看。
哦,还有一个旁注:在 .NET 4.0 中有 Enum.TryParse方法,因此您甚至不需要在此特定代码段中 try
和 catch
。
关于c# - 存在 System.ArgumentException 的 catch block ,但无论如何都没有捕获到异常,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9026326/