Я создаю UserControl, и я не уверен, как обрабатывать исключения, сам элемент управления не очень сложен, пользователь выбрал изображение с диска, чтобы он мог его авторизовать, я точно не знаю, как будет использоваться элемент управления поэтому, если я использую MessageBox, я могу заблокировать приложение, а если я просто переброшу его повторно, я могу вывести его из строя.
заранее спасибо.
Хуан Замудио





необработанные исключения обязательно должны быть выброшены, чтобы люди, использующие ваш контроль, могли видеть, что не так.
это обычная проблема, с которой сталкиваются разработчики, создающие библиотеки. Попытайтесь отсеять ошибки и решить для оставшихся случаев ошибок, является ли это ожидаемой ошибкой (ваш элемент управления не должен генерировать исключение, а скорее изящно обрабатывать ошибку) или неожиданным исключительным состоянием (ваш элемент управления должен как можно скорее генерировать исключение).
Вы также можете взглянуть на Дизайн по контракту, методологию объявления необходимых предварительных условий и гарантированных постусловий. Это может показаться академическим, но приводит к более надежному коду.
ОБНОВИТЬ: Хорошее введение - http://se.ethz.ch/~meyer/publications/computer/contract.pdf
С уважением, тамберг
Хорошее введение - se.ethz.ch/~meyer/publications/computer/contract.pdf
Обрабатывайте только те исключения, о которых вы знаете и знаете, что делать. Не беспокойтесь об общих обработчиках, таких как MessageBox. Просто позвольте ему распространиться в приложение, где есть больше контекста для диагностики ошибки. Они обязаны перехватывать любые исключения, чтобы приложение не вылетало из строя. В случае исключения они ничего не могут сделать, потому что это связано с внутренними компонентами элемента управления, вы должны обработать это самостоятельно, и если это частично ошибка пользователя, оберните исключение сообщением о том, что отсутствует, с оригиналом исключение доступно через свойство InnerException.
В дополнение к тому, что было сказано, я также хочу упомянуть, что вы должны попытаться, чтобы ваш элемент управления избегал исключений, проверяя различные состояния объекта и «предотвращая», а не разрешая возникновение исключения.
Имейте в виду, что выброс исключения - довольно дорогостоящий процесс и (как мне сказали в прошлом) исключения должны быть зарезервированы для действительно "исключительных" неожиданных случаев ...
С уважением,
откровенный
Да, это правда, но что насчет исключения IOException, я могу его поймать, но что мне с ним делать, я могу уведомить об ошибке с помощью MessageBox или «желтой полосы» а-ля IE. или просто молча справиться с этим.