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必须不可为空