Tätä julkaisua muokasi viimeksi Kongcida 29.5.2019 klo 11:16
johdanto Projektissa ilmenee ongelmia projektin toiminnassa hallitsemattomista syistä. Esimerkiksi palvelinvika, palvelun kaatuminen, verkon katkos jne. Jos kohtaamme joitakin uusittavia virheitä, voimme käyttää Polly —— . .NET:n elastiset ja tilapäiset vikojen käsittelykirjastot. Projektin virallinen verkkosivuston osoite (Hyperlinkin kirjautuminen on näkyvissä.)。 Tänään tämä artikkeli dokumentoi Pollyn huonon uudelleenyrittämisstrategian.
Ympäristö ja työkalut
>VS 2017
>Windows 10 -järjestelmä
Tekstiviesti
1: Luo uusi konsolisovellus.
2: Lainaa Pollya. Ladattavissa NuGet-paketissa
3: Liitä koodi
4: F6 generoi. Etsi sitten luotu .exe-tiedosto debug-kansion alta – > kaksoisklikkaa käynnistääksesi.
Näet ulostuloviestin: Kokeiltu uudelleen kolme kertaa.
Kun F5 debuggaa, näet myös, että tätä menetelmää on käytetty kolme kertaa.
Pollyn uusintayritysstrategia selitetään yksityiskohtaisesti
1: Poikkeustyyppi
Tässä koodissa :handle sisältää poikkeustyypin, jota kokeillaan uudelleen. Eli kun suoritettu koodi tuottaa tietyn poikkeuksen, uudelleentry-funktio suoritetaan. Muussa tapauksessa uusintayritystä ei tehdä. Koska jotkut poikkeukset eivät vaadi uudelleenyritystä.
Tietenkin voimme täyttää useita erityisiä poikkeustyyppejä tässä, jotta voimme yrittää uudelleen.
DivideByZeroException edustaa tässä poikkeusta, joka yrittää jakaa nollalla. SqlException tarkoittaa poikkeusta, joka nousee, kun Sql Server palauttaa virheen tai varoituksen. Esimerkiksi tietokantayhteyden epäonnistuminen, SQL-suoritusvirhe jne. SmtpException tarkoittaa postipalvelun esittämää poikkeusta. Esimerkiksi lähetys epäonnistui, verkkoyhteys epäonnistui ja sähköpostitilin tiedot olivat epänormaalit.
Erityisistä poikkeustyypeistä löytyy Microsoftin virallisesta dokumentaatiosta:
2: Uusintayritystyyppi
1) Ensimmäinen uusintayritystyyppi on suoraan annettu määrä yrityksiä. Seuraavaa koodia on kokeiltu vain kolme kertaa uudelleen.
Voimme kutsua kunkin uudelleenyrityksen aikana suoritetut asiaankuuluvat toiminnot uudelleenyrittäessä. Seuraava koodi on toinen tilaus myöhemmin. Uusintayritystä tehdessä tulostetaan uusintayritysten määrä ja poikkeuksen syy.
Voimme myös pitää koodin yrittämässä uudelleen, kunnes se onnistuu.
2) Toinen uudelleenyrittämisen tyyppi on yrittää uudelleen tietyin väliajoin. Seuraava koodi tarkoittaa uudelleenyrittämistä 2, 7 tai 10 sekunnin välein. Yritä uudelleen 10 sekuntiin. Jos suoritus ei onnistu, lopeta uusintayritys.
Voimme myös yrittää uudelleen ajoittain, kunnes uusintayritys onnistuu. Tämä vaatii funktion laskemisen.
Yllä oleva koodi viittaa epäsuoran 2:n potenssiuudelleenyrittämiseen. Esimerkiksi, jos suoritus epäonnistuu, ensimmäinen kerta yritetään uudelleen 2 sekunnin välein, toinen kerta 4 sekunnin välein ja kolmas kerta 8 sekunnin välein......... Ja niin edelleen. Kunnes teloitus onnistuu.
Epilogi
Huomautus: Yllä olevan koodin Handle-poikkeustyypit tulisi täyttää projektisi todellisen tilanteen mukaan. Kaikki poikkeukset eivät vaadi uudelleenyritystä.
Poikkeustyyppi on perusluokka kaikille poikkeuksille. On parasta olla täyttämättä tätä kahvaan, muuten siitä seuraa hyvin vakavia seurauksia.
|