Ten post został ostatnio edytowany przez Kongcida 29.05.2019 o 11:16
przedmowa W projekcie pojawiają się problemy z jego funkcjonowaniem z powodu niekontrolowanych przyczyn. Na przykład awaria serwera, awaria usług, awaria sieci itd. W przypadku błędów możliwych do ponownego przetestowania możemy użyć Polly —— . .NET Elastyczne i Przejściowe Biblioteki Obsługi Błędów. Oficjalny adres strony internetowej projektu (Logowanie do linku jest widoczne.)。 Dziś ten artykuł przedstawi złą strategię powtórek Polly.
Środowisko i narzędzia
>VS 2017
>System Windows 10
Tekst
1: Stwórz nową aplikację konsolową.
2: Cytuję Polly. Dostępne do pobrania w pakiecie NuGet
3: Wklej kod
4: F6 generuje. Następnie znajdź wygenerowany plik .exe w folderze debug – > kliknij dwa razy, aby uruchomić.
Możesz zobaczyć komunikat wyjściowy: Próba powtórzona trzy razy.
Podczas debugowania w F5 można też zobaczyć, że ta metoda była stosowana trzy razy.
Strategia powtórek Polly jest szczegółowo wyjaśniona
1: Typ wyjątku
W tym kodzie uchwyt :handle zawiera typ wyjątku, który ma zostać powtórzony. To znaczy, gdy wykonany kod generuje określony wyjątek, funkcja retry jest wykonywana. W przeciwnym razie nie będzie wykonywana powtórka. Ponieważ niektóre wyjątki nie wymagają ponownej próby.
Oczywiście możemy tu wypełnić kilka konkretnych typów wyjątków, aby spróbować ponownie.
DivideByZeroException tutaj reprezentuje wyjątek, który próbuje podzielić przez zero. SqlException oznacza wyjątek, który jest wywoływany, gdy SQL Server zwraca błąd lub ostrzeżenie. Na przykład awaria połączenia z bazą danych, błąd wykonania SQL itd. SmtpException oznacza wyjątek zgłaszany przez usługę pocztową. Na przykład wysłanie się nie powiodło, połączenie sieciowe zawiodło, a informacje o kontach e-mail były nieprawidłowe.
Aby poznać konkretne typy wyjątków, zapoznaj się z oficjalną dokumentacją Microsoftu:
2: Typ próby powtórnej
1) Pierwszym typem powtórek jest bezpośrednia określona liczba prób. Poniższy kod jest powtarzany tylko 3 razy.
Możemy wywołać odpowiednie działania wykonane przy każdej powtórce podczas ponownej próby. Następujący kod to kolejne zlecenie później. Podczas ponownego próbowania wyświetlana jest liczba prób oraz powód wyjątku.
Możemy też kontynuować próby kodu, aż się powiedzie.
2) Drugim typem powtórek jest powtarzanie prób w odstępach czasu. Poniższy kod oznacza, że można powtarzać co 2 sekundy, 7 sekund lub 10 sekund. Spróbuj ponownie do 10 sekund. Jeśli wykonanie nie zakończy się sukcesem, zakończ próbę ponowną.
Możemy też próbować ponownie w odstępach czasu, aż powtórka zakończy się sukcesem. Wymaga to obliczenia funkcji.
Powyższy kod odnosi się do próby ponownego zasilania pośredniego 2. Na przykład, jeśli wykonanie się nie powiedzie, pierwsze próby zostaną powtórzone co 2 sekundy, drugie w odstępach po 4 sekundy, a trzecie w odstępach 8 sekund......... I tak dalej. Aż wykonanie zakończy się sukcesem.
Epilog
Uwaga: Typy wyjątków w powyższym kodzie Handle powinny być wypełnione zgodnie z rzeczywistą sytuacją w Twoim rzeczywistym projekcie. Nie wszystkie wyjątki wymagają ponownej próby.
Typ wyjątku to klasa bazowa dla wszystkich wyjątków. Najlepiej nie wypełniać tego uchwytu, bo inaczej będzie to miało bardzo poważne konsekwencje.
|