|
|
Δημοσιεύτηκε στις 28/5/2019 11:54:53 μ.μ.
|
|
|
|

Αυτό το άρθρο επεξεργάστηκε τελευταία φορά από τον/την Kongcida στις 2019-5-29 11:16
πρόλογος Σε ένα έργο, θα υπάρξουν προβλήματα με τη λειτουργία του έργου για ανεξέλεγκτους λόγους. Για παράδειγμα, μια αποτυχία διακομιστή, ένα σφάλμα υπηρεσίας, διακοπή δικτύου κ.λπ. Αντιμετωπίζοντας ορισμένα σφάλματα που μπορούν να επαναληφθούν, μπορούμε να χρησιμοποιήσουμε το Polly —— . .NET Βιβλιοθήκες Ελαστικού και Μεταβατικού Χειρισμού Σφαλμάτων. Επίσημη διεύθυνση του δικτυακού τόπου του έργου (Η σύνδεση με υπερσύνδεσμο είναι ορατή.)。 Σήμερα αυτό το άρθρο θα τεκμηριώσει την κακή στρατηγική επανάληψης της Polly.
Περιβάλλον & Εργαλεία
>VS 2017
>Σύστημα Windows 10
Κείμενο
1: Δημιουργήστε μια νέα εφαρμογή κονσόλας.
2: Παραθέτω την Polly. Διαθέσιμο για λήψη στο πακέτο NuGet
3: Επικολλήστε τον κώδικα
4: Το F6 δημιουργεί. Στη συνέχεια, βρείτε το αρχείο .exe που δημιουργήθηκε κάτω από το φάκελο εντοπισμού σφαλμάτων – > κάντε διπλό κλικ για εκτέλεση.
Μπορείτε να δείτε το μήνυμα εξόδου: Επανάληψη τριών προσπαθειών.
Όταν το F5 κάνει εντοπισμό σφαλμάτων, μπορείτε επίσης να δείτε ότι αυτή η μέθοδος έχει γίνει τρεις φορές.
Η στρατηγική επανάληψης της Polly εξηγείται λεπτομερώς
1: Τύπος εξαίρεσης
Σε αυτόν τον κώδικα, το :handle περιέχει τον τύπο εξαίρεσης που θα δοκιμαστεί ξανά. Δηλαδή, όταν ο εκτελούμενος κώδικας παράγει μια συγκεκριμένη εξαίρεση, εκτελείται η συνάρτηση επανάληψης. Διαφορετικά, δεν θα πραγματοποιηθεί επανάληψη. Επειδή ορισμένες εξαιρέσεις δεν απαιτούν επανάληψη.
Φυσικά, μπορούμε να συμπληρώσουμε έναν αριθμό συγκεκριμένων τύπων εξαιρέσεων εδώ για να προσπαθήσουμε ξανά.
Το DivideByZeroException εδώ αντιπροσωπεύει μια εξαίρεση που επιχειρεί να διαιρέσει με το μηδέν. Το SqlException υποδεικνύει μια εξαίρεση που εμφανίζεται όταν ο Sql Server επιστρέφει ένα σφάλμα ή μια προειδοποίηση. Για παράδειγμα, αποτυχία σύνδεσης βάσης δεδομένων, σφάλμα εκτέλεσης SQL κ.λπ. Το SmtpException υποδεικνύει μια εξαίρεση που εγείρεται από την υπηρεσία αλληλογραφίας. Για παράδειγμα, η αποστολή απέτυχε, η σύνδεση δικτύου απέτυχε και οι πληροφορίες του λογαριασμού email ήταν μη φυσιολογικές.
Για συγκεκριμένους τύπους εξαιρέσεων, ανατρέξτε στην επίσημη τεκμηρίωση της Microsoft:
2: Τύπος επανάληψης
1) Ο πρώτος τύπος επανάληψης είναι ένας άμεσος δεδομένος αριθμός επαναλήψεων. Ο παρακάτω κώδικας επαναλαμβάνεται μόνο 3 φορές.
Μπορούμε να καλέσουμε τις σχετικές ενέργειες που εκτελούνται σε κάθε επανάληψη κατά την επανάληψη. Ο παρακάτω κώδικας είναι μια άλλη προμήθεια αργότερα. Κατά την εκτέλεση μιας επανάληψης, εκτυπώνεται ο αριθμός των επαναλήψεων και ο λόγος της εξαίρεσης.
Μπορούμε επίσης να διατηρήσουμε τον κώδικα να προσπαθεί μέχρι να πετύχει.
2) Ο δεύτερος τύπος επανάληψης είναι η επανάληψη κατά διαστήματα. Ο παρακάτω κωδικός σημαίνει να προσπαθείτε ξανά κάθε 2 δευτερόλεπτα, 7 δευτερόλεπτα ή 10 δευτερόλεπτα. Προσπαθήστε ξανά στα 10 δευτερόλεπτα. Εάν η εκτέλεση δεν είναι επιτυχής, τερματίστε την επανάληψη.
Μπορούμε επίσης να προσπαθήσουμε ξανά κατά διαστήματα μέχρι να είναι επιτυχής η επανάληψη. Αυτό απαιτεί τον υπολογισμό μιας συνάρτησης.
Ο παραπάνω κωδικός αναφέρεται στην επανάληψη ισχύος του έμμεσου 2. Για παράδειγμα, εάν η εκτέλεση αποτύχει, η πρώτη φορά θα επαναληφθεί σε διαστήματα 2 δευτερολέπτων, η δεύτερη φορά θα επαναληφθεί σε διαστήματα 4 δευτερολέπτων και η τρίτη φορά θα επαναληφθεί σε διαστήματα 8 δευτερολέπτων......... Και ούτω καθεξής. Μέχρι να είναι επιτυχής η εκτέλεση.
Επίλογος
Σημείωση: Οι τύποι εξαιρέσεων στον παραπάνω κωδικό Handle θα πρέπει να συμπληρωθούν σύμφωνα με την πραγματική κατάσταση στο πραγματικό σας έργο. Δεν απαιτούν όλες οι εξαιρέσεις επανάληψη.
Ο τύπος εξαίρεσης είναι η βασική κλάση για όλες τις εξαιρέσεις. Είναι καλύτερο να μην το γεμίσετε στη λαβή, διαφορετικά θα έχει πολύ σοβαρές συνέπειες.
|
Προηγούμενος:. Η τιμή επιστροφής του PayPal IPN ήταν πάντα ΜΗ ΕΓΚΥΡΗΕπόμενος:C# Χρήση λέξεων-κλειδιών απόδοσης
|