Исключение времени разработки не обнаружено в .Net Winforms - PullRequest
2 голосов
/ 04 октября 2010

У меня есть форма, которая используется во время разработки для настройки различных свойств.
Я пробовал два способа сделать на уровне формы перехват всех исключений:

(1) Я добавляюобработчик Application.ThreadException в конструкторе.
(2) Я обертываю метод Show формы в блок Try / Catch

Оба они работают во время выполнения, когда я тестирую, добавляясетку свойств формы и установите мой компонент как SelectedObject.

Однако во время разработки форма просто закрывается без какого-либо сообщения;ни мое сообщение, ни какое-либо сообщение, объясняющее, что есть необработанное исключение.

Любые идеи?

ETA: Это не об отладке во время разработки.Речь идет о том, как подарить пользователю дружеское сообщение, когда мой редактор типов встречает необработанное исключение.

1 Ответ

0 голосов
/ 03 ноября 2011

Технически у вас нет объекта Application во время разработки, и он не вызывает метод Show() так же, как вы.Лучший способ перехватить исключение - окружить вызывающий сбой метод или свойство, которые у дизайнера возникли при загрузке, с помощью метода try / catch и выбросить исключение.

Для проверки добавьте в форму фиктивное свойство с именем IamGoingToThrowAnException, а в получателе для свойства введите throw new System.Exception("Caught me in design mode") следующим образом:

public string IamGoingToThrowAnException 
{
    get
    {
        throw new System.Exception("Caught me in design mode.");
    }
}

То же самое работает для любых методов или свойств, которые инициализируются с помощью метода InitializeComponents или конструктора вашей формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...