簡體   English   中英

存在System.ArgumentException的捕獲塊,但是無論如何都沒有捕獲到異常,為什么?

[英]Catch block for System.ArgumentException exists, but exception is not caught anyway, why?

我有以下代碼:

       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塊工作得非常好,只是您在Visual Studio調試器中正在尋找它。 這就是第一次機會異常的意思。 調試時,所有異常都顯示在VS中,只是如果您具有適當的catch子句,則第一次機會異常可能會消失。 順便說一下,您可以將VS配置為不顯示它們。

哦,還有一點需要注意:在.NET 4.0中,有Enum.TryParse方法,因此您甚至不需要try catch這個特定代碼段。

優先通知只是讓調試器知道引發了異常-這是在考慮任何捕獲幀之前發生的。 簡而言之,您的異常(可能)被捕獲了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM