Această postare a fost editată ultima dată de Kongcida la 29-05-2019, ora 11:16
prefață Într-un proiect, vor apărea probleme de funcționare din motive incontrolabile. De exemplu, o defecțiune a serverului, o prăbușire a serviciului, o întrerupere de rețea etc. Dacă întâmpinăm unele erori reîncercabile, putem folosi Polly —— . Biblioteci de gestionare elastică și a defectelor tranzitorii .NET. Adresa oficială a site-ului proiectului (Autentificarea cu hyperlink este vizibilă.)。 Astăzi, acest articol va documenta strategia proastă de reîncercare a lui Polly.
Mediu și Unelte
>VS 2017
>Sistemul Windows 10
Text
1: Creează o nouă aplicație pentru consolă.
2: Citez-o pe Polly. Disponibil pentru descărcare în pachetul NuGet
3: Lipește codul
4: F6 generează. Apoi găsește fișierul .exe generat în folderul de depanare – > dublu click pentru a rula.
Poți vedea mesajul de ieșire: Reîncercat de trei ori.
Când F5 depanează, poți vedea și că această metodă a fost folosită de trei ori.
Strategia de reîncercare a lui Polly este explicată în detaliu
1: Tip excepție
În acest cod, :handle conține tipul de excepție ce urmează a fi încercat din nou. Adică, atunci când codul executat produce o excepție specifică, funcția de reîncercare este executată. Altfel, nu se va efectua nicio reîncercare. Pentru că unele excepții nu necesită o reîncercare.
Desigur, putem completa aici câteva tipuri specifice de excepții pentru a încerca din nou.
DivideByZeroException aici reprezintă o excepție care încearcă să împartă la zero. SqlException indică o excepție care apare atunci când SqlServer returnează o eroare sau un avertisment. De exemplu, eșecul conexiunii la baza de date, eroare de execuție SQL etc. SmtpException indică o excepție ridicată de serviciul poștal. De exemplu, trimiterea a eșuat, conexiunea de rețea a eșuat, iar informațiile contului de email au fost anormale.
Pentru tipuri specifice de excepții, vă rugăm să consultați documentația oficială Microsoft:
2: Tipul de reîncercare
1) Primul tip de reîncercare este un număr direct dat de încercări. Următorul cod este reîncercat doar de 3 ori.
Putem chema acțiunile relevante efectuate la fiecare reîncercare la reîncercare. Codul următor este o altă comandă ulterioară. La efectuarea unei reîncercări, numărul de încercări și motivul excepției sunt afișate.
Putem de asemenea să reîncercăm codul până când reușește.
2) Al doilea tip de reîncercare este reîncercarea la intervale. Codul următor înseamnă să încerci din nou la fiecare 2 secunde, 7 secunde sau 10 secunde. Reîncearcă la 10 secunde. Dacă executarea nu are succes, se încheie reîncercarea.
Putem încerca din nou și la intervale până când reîncercarea are succes. Aceasta necesită calculul unei funcții.
Codul de mai sus se referă la reîncercarea puterii indirectă 2. De exemplu, dacă execuția eșuează, prima dată va fi reîncercată la intervale de 2 secunde, a doua încercare la intervale de 4 secunde, iar a treia încercare la intervale de 8 secunde......... Și așa mai departe. Până când execuția va fi reușită.
Epilog
Notă: Tipurile de excepții din codul Handle de mai sus trebuie completate în funcție de situația reală din proiectul tău. Nu toate excepțiile necesită o reîncercare.
Tipul excepției este clasa de bază pentru toate excepțiile. Este mai bine să nu umpli acest lucru în mâner, altfel va avea consecințe foarte serioase.
|