Ezt a bejegyzést utoljára Kongcida szerkesztette: 2019-05-29, 11:16
előszó Egy projektben problémák adódhatnak a projekt működésével ellenőrizhetetlen okok miatt. Például szerverhiba, szolgáltatás összeomlása, hálózati kimaradás stb. Ha újra próbálható hibákkal találkozunk, használhatjuk a Polly —— . .NET rugalmas és átmeneti hibakezelő könyvtárak. A projekt hivatalos weboldalának címe (A hiperlink bejelentkezés látható.)。 Ma ez a cikk dokumentálja Polly rossz újrapróbálkozási stratégiáját.
Környezet és eszközök
>VS 2017
>Windows 10 rendszer
SMS
1: Hozz létre egy új konzolos alkalmazást.
2: Idézd Pollyt. Letölthető a NuGet csomagban
3: Illesztsd be a kódot
4: F6 generál. Ezután keresd meg a generált .exe fájlt a hibakeresés mappában – > dupla kattintással a futtatáshoz.
Láthatod a kimeneti üzenetet: Háromszor próbálkozva.
Amikor az F5 hibakeresést végez, azt is láthatod, hogy ezt a módszert háromszor is megcsinálták.
Polly újrapróbálkozási stratégiáját részletesen elmagyarázzák
1: Kivételtípus
Ebben a kódban a :handle tartalmazza a visszapróbálandó kivételtípust. Vagyis amikor a végrehajtott kód egy adott kivételt generál, a retry függvény fut el. Ellenkező esetben nem végezik újra a próbálkozást. Mert néhány kivétel nem igényel újrapróbálást.
Természetesen itt több konkrét kivételtípust is kitölthetünk, hogy újra próbálkozhassunk.
A DivideByZeroException itt egy olyan kivételt képvisel, amely megpróbálja elosztani nullával. A SqlException olyan kivételt jelöl, amely akkor jelenik meg, amikor a SQL Server hibát vagy figyelmeztetést ad vissza. Például adatbázis-kapcsolati hiba, SQL végrehajtási hiba stb. Az SmtpException egy olyan kivételt jelöl, amelyet a postai szolgáltatás felhozott. Például a küldés meghibásodott, a hálózati kapcsolat meghibásodott, és az e-mail fiók adatai rendellenesek voltak.
A konkrét kivételtípusokért kérjük, tekintse meg a Microsoft hivatalos dokumentációját:
2: Újrapróbálkozás típusa
1) Az első típusú újrapróbálkozás közvetlenül adott számú próbálkozás. A következő kódot csak háromszor próbálják újra.
Újra próbálkozáskor megnevezhetjük a releváns műveleteket, amelyeket minden újrapróbálkozásnál végrehajtunk. A következő kód egy újabb megbízás következik. Újrapróbálkozáskor kinyomtatják az újrapróbálkozások számát és a kivétel okát.
A kódot újra próbálhatjuk újra, amíg sikerül nem.
2) A második típusú újrapróbálkozás időközönként. A következő kód azt jelenti, hogy 2, 7 vagy 10 másodpercenként újra próbálkozni. Próbáld újra 10 másodpercre. Ha a végrehajtás nem sikeres, fejezd be az újrapróbálkozást.
Időközönként újra próbálkozhatunk, amíg az újrapróbálás sikeres nem lesz. Ez függvény kiszámítását igényli.
A fenti kód a direkt 2 hatványújrapróbálására utal. Például, ha a végrehajtás sikertelen, az első alkalommal 2 másodperces időközönként, a másodikat 4 másodperces időközönként, a harmadszor pedig 8 másodperces időközönként próbálják újra......... És így tovább. Amíg a végrehajtás sikeres nem lesz.
Epilógus
Megjegyzés: A fenti Handle kódban szereplő kivételtípusokat a projekt tényleges helyzete szerint kell kitölteni. Nem minden kivételhez kell újra próbálkozni.
A kivételtípus az alaposztály minden kivételre. A legjobb, ha nem töltöd be a fogantyúba, különben nagyon súlyos következményekkel jár.
|