Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 22130|Απάντηση: 3

[ Πλαίσιο ] . Ανθεκτικότητα .NET και χειρισμός παροδικών αποτυχιών Στρατηγική επανάληψης επανάληψης Polly

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 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# Χρήση λέξεων-κλειδιών απόδοσης
Δημοσιεύτηκε στις 29/5/2019 9:17:54 π.μ. |
Εφάρμοσα μόνος μου τον μηχανισμό επανάληψης στο AOP και στο τέλος διαπίστωσα ότι η βιβλιοθήκη Polly μπορεί να καλύψει τις ανάγκες μου, αλλά η λειτουργία μου έχει υλοποιηθεί και αναφέρομαι σε μια βιβλιοθήκη τρίτου μέρους, η οποία μπορεί να έχει κάποιο άχρηστο κώδικα, ο οποίος δεν μπορεί να βελτιστοποιήσει το σύστημά μου, επομένως δεν είναι χρήσιμο προς το παρόν.

Επισυνάπτεται ο κωδικός μου:



Όταν έχω χρόνο, θα κοιτάξω και την Πόλυ
Δημοσιεύτηκε στις 29/5/2019 9:22:01 π.μ. |
Xiao Zhaozha Δημοσιεύτηκε στις 2019-5-29 09:17
Εφάρμοσα μόνος μου τον μηχανισμό επανάληψης στο aop, και στο τέλος, διαπίστωσα ότι η βιβλιοθήκη Polly μπορούσε να καλύψει τις ανάγκες μου, αλλά η λειτουργία μου έχει υλοποιηθεί και η εισαγωγή...

Δεν υπάρχει τίποτα κακό στο να κάνετε μόνοι σας μικρές ανάγκες όπως αυτή
Και θα πρέπει να περιμένετε την επόμενη φορά για να προσπαθήσετε ξανά
Δημοσιεύτηκε στις 29/5/2019 9:29:22 π.μ. |
Winds Δημοσιεύτηκε στις 2019-5-29 09:22
Δεν υπάρχει τίποτα κακό στο να κάνετε μόνοι σας μικρές ανάγκες όπως αυτή
Και πρέπει να περιμένετε την επόμενη φορά για να προσπαθήσετε ξανά;

Όχι, η εξαίρεση πρέπει να προκαλείται από διενέξεις συγχρονισμού, εισαγωγής δεδομένων, ενημέρωσης και διαγραφής, αλλά πρέπει να υπάρχει κάποια που θα εκτελεστεί με επιτυχία, ....... Ο κωδικός που παραλείφθηκε αναδιπλώνει τη συναλλαγή και η εξαίρεση θα επανέλθει αυτόματα. Στη δεύτερη επανάληψη, η σύγκρουση έχει φύγει, οπότε δεν όρισα χρόνο αναμονής.
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com