Допустим, у вас есть система .NET, которой необходимо отправлять уведомления по электронной почте системному администратору при возникновении ошибки. Пример:
try
{
//do something mission critical
}
catch(Exception ex)
{
//send ex to the system administrator
//give the customer a user-friendly explanation
}
Этот блок кода вызывается разными пользователями сотни раз в секунду.
Теперь допустим, что базовый API / служба / база данных не работают. Этот код будет давать сбои много-много раз . Бедный администратор проснется с несколькими миллионами электронных писем в своем почтовом ящике, а разработчик получит грубый телефонный звонок, не то чтобы такой инцидент (кашель) обязательно произошел сегодня утром.
Совершенно ясно, что это не тот дизайн, который хорошо масштабируется.
Первые несколько решений, которые приходят на ум, в некотором роде ошибочны:
Это похоже на проблему, которую нужно решить, и что мы делаем это глупо. Предложения приветствуются, даже если они включают совершенно другую стратегию управления исключениями!