[英]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.