Исключение StackOverlow в System.Web.dll

Итак, я сделал глупую ошибку, я назвал myControl.Controls.Add(myControl);. Достаточно легко. Интересно то, что это приводит к сбою IIS, и в фактической структуре возникает исключение. Я даже не сломался и не дал отладить, он просто развалился.

Кажется, что это должно было быть обработано платформой .NET лучше, чем было. Или должно? Является ли это ожидаемым поведением с такой ошибкой, или отладчик мог бы обработать ее более элегантно?


person Stephen Collins    schedule 04.01.2013    source источник
comment
Это совершенно нормально. Как компьютер может запускать бессмысленный код? ;п   -  person leppie    schedule 04.01.2013
comment
Я предполагаю, что это вызвало сбой домена приложения, в котором он работал, а не IIS. Там есть разница; IIS может управлять многими рабочими процессами. И да, я ожидал бы этого с исключением SO.   -  person Tim Medora    schedule 04.01.2013
comment
Если вам больно, когда вы это делаете... не делайте этого.   -  person Steve Wellens    schedule 04.01.2013


Ответы (1)


Это задокументированное поведение — см. документацию в MSDN.

Вот соответствующая цитата:

Начиная с .NET Framework версии 2.0, объект StackOverflowException не может быть перехвачен блоком try-catch, и соответствующий процесс завершается по умолчанию.

РЕДАКТИРОВАТЬ:
С точки зрения отладки, поскольку очевидно, что трассировки стека нет, если проблема воспроизводима, то соответствующий обход кода (или отладка до фактического возникновения исключения) может точно определить проблему. Еще один способ — использовать инструмент диагностики отладки IIS и получить сведения об ошибке и аварийный дамп. Обратитесь к этому SO answer, который, кажется, предлагает аналогичные способы.

person VinayC    schedule 04.01.2013