По умолчанию это уже работает.Метод обработки исключений потока пользовательского интерфейса контролируется Application.SetUnhandledExceptionMode ().По умолчанию используется UnhandledExceptionMode.CatchException, так что событие ThreadException вызывается и по умолчанию создает ThreadExceptionDialog.
Однако, если отладчик подключен, он переопределяет этот режим.Так что исключение всегда будет необработанным, если нет активного предложения catch.Так что отладчик остановится, что позволит вам диагностировать проблему.Написав свой собственный метод try / catch, вы не позволяете этому работать.
Имейте в виду, что OnPaint () может быть особенным, особенно для PictureBox.У него есть предложение try / catch, перехватывающее необработанное исключение и рисующее красный крест.Это немного необычно, но необходимо, потому что оно поддерживает свойство ImageLocation.Что позволяет отображать изображения из потенциально ненадежного сетевого источника.Наилучший способ устранения неполадок в этом случае - с помощью «Отладка + исключения», отметьте флажок «Брошено».Это заставляет отладчик всегда останавливаться на исключении, даже если оно не обработано.