В ответ на ваши 4 вопроса:
1: вы можете перехватить событие My.Application.Startup , чтобы добавить код обработки исключений.Обратите внимание, что код для обработчика события Startup хранится в файле ApplicationEvents.vb, который по умолчанию скрыт.Вот код C # (почти идентичный в VB), который настроит ваши обработчики исключений:
// Event handler for handling UI thread exceptions.
Application.ThreadException +=
new ThreadExceptionEventHandler(App_UiThreadException);
// Force all Windows Forms errors to go through our handler.
// NB In .NET 4, this doesn't apply when the process state is corrupted.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
// Event handler for handling non-UI thread exceptions.
AppDomain.CurrentDomain.UnhandledException += new
UnhandledExceptionEventHandler(App_NonUiThreadException);
// Run the application.
2: Вы можете использовать бесплатный CLR Profiler для проверки использования памяти.
3: Вы можете сами вызвать исключение OutOfMemory , если хотите посмотреть, как ваша программа справится с этим.
4: Одним из полезных ресурсов является Отладка утечки приложений .Еще один Определить утечки памяти CLR .