У меня есть приложение Windows Form, в котором есть глобальный обработчик ошибок для отображения непредвиденных ошибок.
Namespace My
Class MyApplication
Delegate Sub ProcessParametersDelegate(ByVal sender As Object, ByVal args() As String)
Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
Dim ErrorText As String = e.Exception.Message & ", " & e.Exception.StackTrace
Try
MessageBox.Show("Global Error Handler: An unhandled error occurred. It will be copied to your clipboard upon OKing this message: " & ErrorText)
Clipboard.SetText(ErrorText)
Catch ex As Exception
End Try
End Sub
End Class
End Namespace
В VS2008 мои параметры Debug -> Exceptions установлены на значения по умолчанию, которые должны вызывать ошибку для всех необработанных исключений.
У меня есть несколько вопросов:
1) для того же развернутого кода я ИНОГДА получаю номер строки в отображаемом сообщении об ошибке StackTrace, а иногда нет, даже когда сообщение об ошибке включает в себя исходный код, который я написал, а не ссылочный двоичный файл. Проект скомпилирован с конфигурацией DEBUG.
2) Приложение странным образом сворачивает в трей при возникновении ошибки (я думаю, вряд ли кто-нибудь сможет диагностировать эту проблему без моего дополнительного кода, опубликованного, но я все равно упомяну об этом)
3) Когда я пытаюсь преднамеренно вызвать ошибку, например, путем деления на ноль в надежде проверить с помощью обработчика глобальных ошибок, я получаю диалоговое сообщение об ошибке из интерактивного отладчика, а не прыгаю в свой обработчик глобальных ошибок хочу отлаживать, потому что в нем есть что-то большее, чем я написал.) Есть ли у вас какие-либо идеи, как инициировать и принудительно выполнить обработчик глобального события?