2015-03-31 2 views
1

У меня есть форма, которая расширяет класс, который имеет специальную логику обработки исключений, чтобы представить все, что возникает для пользователя, в чистом виде. Эта форма содержит пользовательский UserControl, который может генерировать исключения, которые, если их не принимать, не захватываются и не возвращаются родительской формой и поэтому не попадают в специальную логику.Ловля исключений, исключенных из UserControl в родительской форме?

Как я могу зацепить вещи так, чтобы мой UserControl выдавал исключения в моей форме?

+1

Вы не можете этого сделать. Это не то, как работают исключения. Они всегда поднимаются в стек вызовов. У них нет понятия, что такое пользовательский контроль. Если ваш дизайн требует, чтобы вы улавливали исключения для пользователя в родительском элементе, тогда остановитесь прямо сейчас и выполните редизайн. Невозможно делать то, что вы хотите, и вы не должны делать это в любом случае. –

+0

@JohnSaunders Очевидно, что вы правы на самых определенных уровнях - эти исключения, естественно, поднимаются на стек вызовов, но идея в том, что они должны перетекать от дочернего к родительскому. В этом случае родитель, которому необходимо отвечать на ошибки на уровне ребенка, не является прямым владельцем контекста ребенка. Это довольно часто видно. – Benjin

+0

«Они должны»? В какой вселенной? Не в этом! Остерегайтесь изобретать архитектуры для программного обеспечения, которое кто-то еще написал. –

ответ

-1

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

Вы должны передать исключение в качестве аргумента события.

Обратите внимание: я думаю, что это, вероятно, не правильный способ справиться с исключениями, я просто отвечаю на ваш вопрос.

+0

Это не обязательно должно быть само исключение; просто сообщение, передающее информацию о том, что произошло исключение. Не могли бы вы рассказать о том, как это может выглядеть/сделано? Я новичок в WinForms. – Benjin

+0

FYI, вы просто ответили на его вопрос, указав неправильный ответ и предоставив плохие примеры. Представьте себе, действительно ли OP и многие из будущих тысяч читателей этого ответа идут и _implement_ это предложение! Это будет твоя вина. –

+0

Чем больше я думаю об этом, тем больше я считаю, что OP должен идти вперед и реализовать свой код таким образом. Это особенно верно, если код важен. Таким образом, когда весь карточный домик упадет, ОП научится не бороться с платформой. Тот факт, что WinForms не имеет возможности реализовать это, означает, что вы не должны реализовывать this_! –

Смежные вопросы