|
|
Опубліковано 28.05.2019 23:54:53
|
|
|
|

Цей допис востаннє відредаговано Kongcida 2019-5-29 11:16
Передмова У проєкті виникають проблеми з роботою проєкту з неконтрольованих причин. Наприклад, відмова сервера, збій сервісу, збій мережі тощо. Зіткнувшись із помилками, які можна повторити, ми можемо використати Polly —— . Бібліотеки .NET Еластичної та Тимчасової обробки несправностей. Офіційна адреса сайту проєкту (Вхід за гіперпосиланням видно.)。 Сьогодні ця стаття задокументує погану стратегію повторних спроб Поллі.
Середовище та інструменти
>VS 2017
>Система Windows 10
Текст
1: Створити новий консольний додаток.
2: Цитата Поллі. Доступно для завантаження у пакеті NuGet
3: Вставити код
4: F6 генерує. Потім знайдіть згенерований .exe файл у папці налагодження — > подвійний клік для запуску.
Ви можете побачити вихідне повідомлення: Повторено тричі.
Коли F5 відлагоджує, можна побачити, що цей метод виконували тричі.
Стратегія повторних спроб Поллі детально пояснена
1: Тип винятку
У цьому коді :handle містить тип виключення, який потрібно повторно перевірити. Тобто, коли виконаний код створює певний виняток, виконується функція повторного тестування. Інакше повторна спроба не проводиться. Тому що деякі винятки не потребують повторної спроби.
Звісно, тут можна заповнити кілька конкретних типів винятків для повторної спроби.
Виключення DivideByZeroException тут представляє виняток, який намагається поділити на нуль. SqlException вказує на виняток, який виникає, коли Sql Server повертає помилку або попередження. Наприклад, збій підключення до бази даних, помилка виконання SQL тощо. SmtpException позначає виняток, створений поштовим сервісом. Наприклад, надсилання не вдалося, мережеве з'єднання вийшло з ладу, а інформація про обліковий запис електронної пошти була ненормальною.
Для конкретних типів винятків, будь ласка, зверніться до офіційної документації Microsoft:
2: Повторний тип спроби
1) Перший тип повторної спроби — це пряма задана кількість повторень. Наступний код повторюється лише тричі.
Ми можемо викликати відповідні дії, виконані при кожній повторній спробі. Наступний код — ще одне замовлення пізніше. Під час повторної спроби друкуються кількість повторних спроб і причина винятку.
Ми також можемо продовжувати повторні спроби коду, поки він не стане успішним.
2) Другий тип повторної спроби — це повторні спроби з інтервалами. Наступний код означає повторювати кожні 2, 7 або 10 секунд. Спробуйте ще раз на 10 секунд. Якщо виконання не вдалося — припинити повторну спробу.
Ми також можемо спробувати знову з інтервалами, поки повторна спроба не буде успішною. Це вимагає обчислення функції.
Наведений вище код стосується повторної спроби потужності непрямого 2. Наприклад, якщо виконання не вдається, перший раз повторюють з інтервалом у 2 секунди, другий — з інтервалом у 4 секунди, а третій — з інтервалом у 8 секунд......... І так далі. Поки виконання не буде успішним.
Епілог
Примітка: Типи винятків у наведеному вище кодовому дескрипті слід заповнити відповідно до реальної ситуації у вашому конкретному проєкті. Не всі винятки потребують повторного перегляду.
Тип винятку є базовим класом для всіх винятків. Краще не заповнювати це в ручку, інакше це матиме дуже серйозні наслідки.
|
Попередній:. Інтеграція мережі PayPal IPN повернення завжди була НЕДІЙСНОЮНаступний:C# Використання ключових слів доходу
|