Я недавно обновил свой ноутбук с Vista 32bit с Visual Studio 2005/2008, установленной на Windows 7 x64 с установленной только Visual Studio 2008. Поэтому я не знаю, является ли это проблемой «Windows 7» или просто конфигурацией в visual studio.
Моя проблема в том, что исключения в событии Form_Load () проглатываются без уведомления, что затрудняет отладку ошибок, потому что иногда я даже не замечаю, что происходит исключение.
Допустим, у меня есть этот код (Код - это VB.NET, но стиль комментария в C #, потому что подсветка синтаксиса не распознает «как комментарий»)
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
// Outside the Debugger the exception triggers the default
// "Unhandled Exception" Dialog which is correct.
// Withing 2008 IDE the debugger doen not break like it
// should. However the exception still occures because
// this text is printed to the Output Window:
// A first chance exception of type 'System.Exception'
// occurred in ExceptionTest.exe
Throw New Exception("This Exception gets swallowed")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
// This exception causes the Debugger to break at this line
Throw New Exception("This Exception works fine")
End Sub
End Class
Я нашел предложение проверить флажок «выброшенный» в диалоге исключений («CTRL + D, E»).
Если я это сделаю, то отладчик прерывается при исключении Form_Load (), как я хочу, но он также прерывается при каждом обработанном исключении, например ::
Try
DoSmthThatThrowsArgumentException() // Debugger breaks here
Catch ex as ArgumentException
LogWriter.Write(ex.ToString())
End Try
Кто-нибудь знает, как настроить отладчик VS2008 для правильного поведения в событии Form_Load ()? Согласно этому посту похоже, что это нечто неожиданно появилось в visual studio 2008.