c# - 存在 System.ArgumentException 的 catch block ,但无论如何都没有捕获到异常,为什么?

标签 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 block 不起作用?

最佳答案

Why is the catch block not working?

catch block 工作得很好,只是您在 Visual Studio 调试器中查看它。这就是first chance exception方法。当您调试时,所有异常都显示在 VS 中,只是如果您有适当的 catch 子句,第一次机会异常可能会消失。顺便说一句,你可以configure VS不要给他们看。

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

关于c# - 存在 System.ArgumentException 的 catch block ,但无论如何都没有捕获到异常,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9026326/

相关文章:

c# - 使用自定义类绑定(bind)创建复选框组合框

c# - SQL Server 数据库单元测试和持续集成

c# - Xamarin 表格操作相机给出空异常

c# - ASP.NET/HTML : HTML button's onClick property inside ASP. 网络 (.cs)

c# - 无法关注 C# 中动态创建的列表框

c# - 对象数组到索引数组

c# - 现有数据库的 Entity Framework 代码优先迁移策略

c# - Windows Phone 7 是否支持 KeepAlive 连接?

c# - 使用二进制搜索子字符串搜索数组字符串

c# - 了解 Parallel.For 循环和局部变量