Bu gönderi en son 2019-5-29 11:16 tarihinde Kongcida tarafından düzenlenmiştir
önsöz Bir projede, kontrol edilemez nedenlerle projenin işleyişinde sorunlar yaşanır. Örneğin, bir sunucu arızası, hizmet çökmesi, ağ kesintisi vb. Tekrar denenebilir hatalarla karşılaşırsak, Polly —— . kullanabiliriz .NET Elastik ve Geçici Hata İşleme Kütüphaneleri. Projenin resmi web sitesi adresi (Bağlantı girişi görünür.)。 Bugün bu makale, Polly'nin kötü yeniden deneme stratejisini belgeleyecek.
Çevre ve Araçlar
>VS 2017
>Windows 10 sistemi
Metin
1: Yeni bir konsol uygulaması oluşturun.
2: Polly'den alıntı. NuGet paketinde indirilebilir
3: Kodu yapıştır
4: F6 üretir. Sonra debug klasörünün altında oluşturulan .exe dosyasını bul – > çalıştırmak için çift tıkla.
Çıkış mesajını görebilirsiniz: Üç kez tekrar denedi.
F5 hata ayıklama yaparken, bu yöntemin üç kez yapıldığını da görebilirsiniz.
Polly'nin yeniden deneme stratejisi ayrıntılı olarak açıklanıyor
1: İstisna türü
Bu kodda, :handle tekrar denenecek istisna tipini içerir. Yani, çalıştırılan kod belirli bir istisna oluşturduğunda, yeniden deneme fonksiyonu çalıştırılır. Aksi takdirde, tekrar deneme yapılmaz. Çünkü bazı istisnalar tekrar deneme gerektirmez.
Elbette, burada tekrar denemek için birkaç özel istisna türü doldurabiliriz.
Burada DivideByZeroException, sıfıra bölmeye çalışan bir istisnayı temsil eder. SqlException, Sql Server hata veya uyarı döndürdüğünde ortaya çıkan bir istisnayı gösterir. Örneğin, veritabanı bağlantı arızası, SQL yürütme hatası vb. SmtpException, posta servisi tarafından ortaya çıkarılan bir istisnayı gösterir. Örneğin, gönderme başarısız oldu, ağ bağlantısı bozuldu ve e-posta hesabı bilgileri anormal oldu.
Belirli istisna türleri için lütfen Microsoft'un resmi dokümantasyonuna bakınız:
2: Yeniden deneme tipi
1) İlk tür yeniden deneme, doğrudan verilen bir sayıda denemedir. Aşağıdaki kod sadece 3 kez tekrar deneniyor.
Her tekrar denemede yapılan ilgili eylemleri tekrar denerken çağırabiliriz. Aşağıdaki kod başka bir görev sonrasıdır. Tekrar deneme yapılırken, tekrar deneme sayısı ve istisna nedeni yazılır.
Ayrıca kodu tekrar denemeye devam edebiliriz, ta ki başarılı olana kadar.
2) İkinci yeniden deneme türü aralıklarla tekrar denemektir. Aşağıdaki kod, her 2 saniyede, 7 saniyede veya 10 saniyede bir tekrar deneme anlamına gelir. 10 saniyeye tekrar dene. Eğer uygulama başarılı olmazsa, yeniden denemeyi sonlandırın.
Tekrar deneme başarılı olana kadar aralıklarla tekrar deneyebiliriz. Bu, bir fonksiyonun hesaplanmasını gerektirir.
Yukarıdaki kod, dolaylı 2'nin güç yeniden denemesine atıfta bulunur. Örneğin, yürütme başarısız olursa, ilk deneme 2 saniye aralıklarla tekrar denenir, ikinci kez 4 saniye aralıklarla ve üçüncü kez 8 saniye aralıklarla tekrar denenir......... Ve benzeri. Ta ki infaz başarılı olana kadar.
Epilog
Not: Yukarıdaki kod Handle'daki istisna türleri, gerçek projenizdeki gerçek duruma göre doldurulmalıdır. Tüm istisnalar tekrar deneme gerektirmez.
İstisna türü, tüm istisnalar için temel sınıftır. Bunu sapta doldurmamak en iyisidir, aksi takdirde çok ciddi sonuçları olur.
|