Šį pranešimą paskutinį kartą redagavo Kongcida 2019-5-29 11:16
Įvadas Projekte dėl nekontroliuojamų priežasčių kils problemų dėl projekto veikimo. Pavyzdžiui, serverio gedimas, paslaugos gedimas, tinklo gedimas ir kt. Susidūrę su kai kuriomis pakartotinai bandomomis klaidomis, galime naudoti Polly —— . .NET elastingos ir trumpalaikės gedimų tvarkymo bibliotekos. Oficialus projekto svetainės adresas (Hipersaito prisijungimas matomas.)。 Šiandien šiame straipsnyje bus dokumentuojama bloga Polly pakartotinio bandymo strategija.
Aplinka ir įrankiai
>VS 2017
>"Windows 10" sistema
SMS žinutė
1: Sukurkite naują konsolės programą.
2: Cituokite Polly. Galima atsisiųsti iš "NuGet" paketo
3: Įklijuokite kodą
4: F6 generuoja. Tada derinimo aplanke raskite sugeneruotą .exe failą – > dukart spustelėkite, kad paleistumėte.
Galite pamatyti išvesties pranešimą: Bandyta pakartotinai tris kartus.
Kai F5 derina, taip pat galite pamatyti, kad šis metodas buvo atliktas tris kartus.
Išsamiai paaiškinta Polly pakartotinio bandymo strategija
1: Išimties tipas
Šiame kode :handle yra išimties tipas, kurį reikia pakartoti. Tai yra, kai įvykdytas kodas sukuria konkrečią išimtį, vykdoma pakartotinio bandymo funkcija. Priešingu atveju pakartotinis bandymas nebus atliekamas. Nes kai kurioms išimtims nereikia bandyti iš naujo.
Žinoma, čia galime užpildyti keletą konkrečių išimčių tipų, kad galėtume bandyti dar kartą.
DivideByZeroException čia reiškia išimtį, kurią bandoma padalyti iš nulio. SqlException nurodo išimtį, kuri iškeliama, kai SQL Server pateikia klaidą arba įspėjimą. Pavyzdžiui, duomenų bazės ryšio gedimas, SQL vykdymo klaida ir kt. SmtpException nurodo pašto tarnybos iškeltą išimtį. Pavyzdžiui, siuntimas nepavyko, tinklo ryšys nepavyko, o el. pašto abonemento informacija buvo nenormali.
Konkrečius išimčių tipus rasite oficialioje "Microsoft" dokumentacijoje:
2: Pakartotinio bandymo tipas
1) Pirmasis pakartotinio bandymo tipas yra tiesioginis pakartotinių bandymų skaičius. Šis kodas bandomas tik 3 kartus.
Bandydami iš naujo galime iškviesti atitinkamus veiksmus, atliktus kiekviename pakartotiniame bandyme. Šis kodas yra dar vienas komisinis mokestis vėliau. Atliekant pakartotinį bandymą, spausdinamas pakartotinių bandymų skaičius ir išimties priežastis.
Taip pat galime pakartoti kodą, kol jis pavyks.
2) Antrasis pakartotinio bandymo tipas yra pakartotinis bandymas intervalais. Šis kodas reiškia, kad reikia kartoti kas 2 sekundes, 7 sekundes arba 10 sekundžių. Bandykite dar kartą iki 10 sekundžių. Jei vykdymas nepavyksta, užbaikite bandymą dar kartą.
Taip pat galime bandyti dar kartą, kol pakartotinis bandymas bus sėkmingas. Tam reikia apskaičiuoti funkciją.
Aukščiau pateiktas kodas nurodo netiesioginio 2 galios pakartojimą. Pavyzdžiui, jei vykdymas nepavyksta, pirmą kartą bus bandoma pakartotinai kas 2 sekundes, antrą kartą - kas 4 sekundes, o trečią kartą - kas 8 sekundes......... Ir taip toliau. Kol vykdymas bus sėkmingas.
Epilogas
Pastaba: Aukščiau pateiktame kode Rankena esantys išimčių tipai turėtų būti užpildyti atsižvelgiant į faktinę situaciją jūsų projekte. Ne visoms išimtims reikia bandyti dar kartą.
Išimties tipas yra visų išimčių pagrindinė klasė. Geriausia to neužpildyti rankenoje, kitaip tai turės labai rimtų pasekmių.
|