Tento příspěvek naposledy upravil Kongcida dne 29. 5. 2019 v 11:16
předmluva V projektu se vyskytnou problémy s provozem projektu kvůli nekontrolovatelným důvodům. Například selhání serveru, pád služby, výpadek sítě atd. Pokud narazíme na některé chyby pro opakované pokusy, můžeme použít Polly —— . .NET Elastické a přechodné knihovny pro zpracování chyb. Oficiální webová adresa projektu (Přihlášení k hypertextovému odkazu je viditelné.)。 Dnes tento článek zdokumentuje Pollyinu špatnou strategii opakovaného pokusu.
Prostředí a nástroje
>VS 2017
>Systém Windows 10
Text
1: Vytvořit novou konzolovou aplikaci.
2: Cituj Polly. Dostupné ke stažení v balíčku NuGet
3: Vložte kód
4: F6 generuje. Pak najděte vygenerovaný .exe soubor ve složce pro ladění – > dvojitým kliknutím spusťte.
Vidíte výstupní zprávu: Zkoušet to třikrát.
Když F5 ladí, můžete také vidět, že tato metoda byla provedena třikrát.
Pollyina strategie opakovaného pokusu je podrobně vysvětlena
1: Typ výjimky
V tomto kódu obsahuje :handle typ výjimky, který má být znovu vyzkoušen. To znamená, že když vykonáný kód vytvoří specifickou výjimku, funkce opakovaného pokusu se vykoná. Jinak se žádné opakování neprovede. Protože některé výjimky nevyžadují opakování.
Samozřejmě zde můžeme vyplnit několik konkrétních typů výjimek pro opětovné pokusy.
DivideByZeroException zde představuje výjimku, která se snaží dělit nulou. SqlException označuje výjimku, která je vyvolána, když SQL Server vrátí chybu nebo varování. Například selhání připojení k databázi, chyba při provádění SQL atd. SmtpException označuje výjimku vytvořenou poštovní službou. Například odeslání selhalo, selhalo síťové připojení a informace o e-mailovém účtu byly abnormální.
Pro konkrétní typy výjimek se prosím podívejte na oficiální dokumentaci Microsoftu:
2: Typ opakování
1) Prvním typem opakování je přímý počet opakovaných pokusů. Následující kód se zkouší jen třikrát.
Můžeme při opakovaném pokusu označit relevantní akce provedené při každém opakovaném pokusu. Následující kód je další zakázka později. Při provádění opakovaného pokusu se vypíše počet pokusů a důvod výjimky.
Můžeme také nechat kód znovu zkoušet, dokud neuspěje.
2) Druhým typem opakovaného pokusu je opakované zkoušení v intervalech. Následující kód znamená opakovat každé 2 sekundy, 7 sekund nebo 10 sekund. Zkus to znovu na 10 sekund. Pokud provedení není úspěšné, ukončete opakovaný pokus.
Můžeme také zkoušet znovu v intervalech, dokud nebude opakování úspěšné. To vyžaduje výpočet funkce.
Výše uvedený kód se týká pokusu o napájení nepřímé části 2. Například pokud provedení selže, poprvé se pokusí znovu v intervalech po 2 sekundách, podruhé v intervalech po 4 sekundách a třetí pokus v intervalech po 8 sekundách......... A tak dále. Dokud nebude poprava úspěšná.
Epilog
Poznámka: Typy výjimek v výše uvedeném kódu Handle by měly být vyplněny podle aktuální situace ve vašem skutečném projektu. Ne všechny výjimky vyžadují opakování.
Typ výjimky je základní třída pro všechny výjimky. Nejlepší je to do rukojeti nevyplňovat, jinak to bude mít velmi vážné následky.
|