Я запускаю этот код 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 и увидел, что это привело к разрыву программы на первой строке, которая использовала класс. Но в этом случае в моем коде нет строки для разрыва, поскольку класс вызывался только как HttpHandler, указанный в моем файле web.config. Следовательно, это исключение не нарушалось вообще.