разработка исключений для пользовательских dll, используемых сторонними веб-сайтами - PullRequest
1 голос
/ 07 октября 2011

Я разрабатываю библиотеку классов, которая будет разослана общественности для использования с их приложениями. Он взаимодействует с пользовательской системой БД, которую они должны установить на своих серверах.

У меня проблемы с решением, как генерировать исключения из этой библиотеки DLL, которая в основном является оболочкой для пользовательской системы БД.

Я предполагаю, что мне нужно создать пользовательские исключения, которые могут указывать на различные типы ошибок, включая проверки, ошибки целостности данных и т. Д.

Эта dll будет в конечном итоге использоваться публичными веб-сайтами. Я хотел бы предоставить хороший отзыв конечному пользователю, выдавая надлежащие исключения, чтобы сайт мог принять решение о том, отображать их или нет. Но я не уверен, что можно предвидеть все ошибки ввода пользователя. В случае непредвиденного события, я просто генерирую исключение .net с сообщением об ошибке?

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

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

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

Если вызывающая сторона будет обрабатывать ваше исключение точно так же, как, скажем, InvalidOperationException, то вместо этого вы должны бросить InvalidOperationException.

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

1 голос
/ 07 октября 2011

Вам следует перебрасывать пользовательские исключения, когда ваша DLL знает об ошибке больше, чем указано в исключении, которое вы ловите, если вы не знаете об этом, то вы не знаете БОЛЬШЕ об этом, просто передайте его.

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

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