我跑在調試模式下在Visual Studio此C#代碼:爲什麼Visual Studio在靜態構造函數中發生異常時不顯示異常消息?
public class MyHandlerFactory : IHttpHandlerFactory
{
private static Dictionary<string, bool> myDictionary = new Dictionary<string, bool>();
static MyHandlerFactory()
{
myDictionary.Add("someKey",true);
myDictionary.Add("someKey",true); // fails due to duplicate key
}
}
靜態構造函數之外,當我與錯誤的Visual Studio行凸顯,並彈出一個消息,關於異常。但在靜態構造函數中,我沒有收到這樣的消息。我正在逐行進行,所以我知道我正在接近這條線,而不是進一步。
這是爲什麼?
(我不知道,如果是事實,我的類實現IHttpHandlerFactory問題,但我把它以防萬一。)
這是VS2005,NET 2.0
編輯:我只是想補充一下,事實上它是一個HttpHandler 確實似乎很重要。正如答案所指出的那樣,默認行爲是打破TypeInitializationException而不是內部異常。我測試了另一個沒有HttpHandler的例子,並且看到這導致程序在使用該類的第一行中斷開。但在這種情況下,我的代碼中沒有任何內容可以打破,因爲該類僅在我的web.config文件中被指定爲HttpHandler。因此,它完全沒有打破例外。
感謝您的回答。然而,我在Debug> Exceptions ...中看到的選擇是「C++ Exceptions」,「Common Language Runtime Exceptions」,「Managed Debugging Assistants」,「Native Run-Time Checks」和「Win32 Exceptions」。其中一個是「.Net Exceptions」嗎?我找不到它。 – 2010-03-26 00:44:02
@Tim Goodman - OOPS!我的意思是「公共語言運行時例外」。我會更新我的答案。 – 2010-03-26 02:55:03
啊,是的,當公共語言運行時異常被拋出導致它打破內部異常時,它會中斷。謝謝。 – 2010-03-26 03:55:03