Если вы хотите зарегистрировать это, тогда хорошо, поймайте это, зарегистрируйте это, затем бросьте соответствующее исключение и позвольте потребителю решить, как лучше всего иметь дело с этим.Если у вас нет значения для добавления и семантики для изменения, просто сделайте это в своей DLL:
catch(SpecificException ex)
{
LogException(ex);
throw;
}
Если у вас есть дополнительная информация, которую нужно добавить, то сгенерируйте соответствующее новое исключение, используясоответствующий конструктор, который включает это перехваченное исключение в качестве значения innerException
.
То, что вы не должны делать (я видел слишком много людей, пытающихся это сделать), это "умно" определить, какой тип приложения потребляетDLL, и попытаться отобразить пользовательский интерфейс из библиотеки DLL.Даже если вы правильно понимаете все текущие сценарии использования («Это когда-либо используется только приложениями WinForms»), вы теперь ограничиваете потенциал повторного использования в будущем.
Вы должны позволить потребителю решить свою собственную стратегию обработки ошибоквместо того, чтобы пытаться навязать один изнутри DLL.