Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Η συμπεριφορά που περιγράφεται σε αυτό το άρθρο είναι διαθέσιμη μόνο όταν η δυνατότητα Διαχείριση σφαλμάτων σε επίπεδο τύπου είναι ενεργοποιημένη.
Το Power Fx υποστηρίζει χειρισμό σφαλμάτων σε επίπεδο τύπου. Αυτή η δυνατότητα είναι ενεργοποιημένη από προεπιλογή για όλες τις νέες εφαρμογές. Ωστόσο, ορισμένες παλαιότερες εφαρμογές μπορεί να την έχουν απενεργοποιήσει στις Ρυθμίσεις εφαρμογής. Διατηρήστε αυτήν τη δυνατότητα ενεργοποιημένη.
- Ανοίξτε την εφαρμογή καμβά σε λειτουργία επεξεργασίας.
- Μεταβείτε στην καρτέλα Ρυθμίσεις>Ενημερώσεις>Αποσύρσεις tab.
- Βεβαιωθείτε ότι η απενεργοποίηση της διαχείρισης σε επίπεδο τύπου είναι απενεργοποιημένη.
Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Έλεγχος των δυνατοτήτων που είναι ενεργοποιημένες.
Συμβαίνουν σφάλματα. Τα δίκτυα πέφτουν, ο χώρος αποθήκευσης γεμίζει, εμφανίζονται μη αναμενόμενες τιμές. Είναι σημαντικό η λογική σας να συνεχίσει να λειτουργεί σωστά μπροστά σε ενδεχόμενα ζητήματα.
Από προεπιλογή, τα σφάλματα εμφανίζονται στους τύπους μιας εφαρμογής και αναφέρονται στον τελικό χρήστη της εφαρμογής. Με αυτόν τον τρόπο, ο τελικός χρήστης γνωρίζει ότι συνέβη κάτι μη αναμενόμενο. Μπορούν πιθανώς να διορθώσουν οι ίδιοι το πρόβλημα με μια διαφορετική είσοδο ή μπορούν να αναφέρουν το πρόβλημα στον κάτοχο της εφαρμογής.
Ως δημιουργός εφαρμογών, αναλάβετε τον έλεγχο των σφαλμάτων στην εφαρμογή σας:
- Εντοπίστε και χειριστείτε ένα σφάλμα. Εάν υπάρχει πιθανότητα να παρουσιαστεί σφάλμα, γράψτε τους τύπους της εφαρμογής για να εντοπίσετε τη συνθήκη σφάλματος και να επαναλάβετε τη λειτουργία. Ο τελικός χρήστης δεν χρειάζεται να ανησυχεί ότι παρουσιάστηκε σφάλμα επειδή ο δημιουργός έλαβε υπόψη του τη δυνατότητα. Καταγράψτε το σφάλμα χρησιμοποιώντας τις συναρτήσεις IfError, IsError και IsErrorOrBlank μέσα σε έναν τύπο.
- Αναφέρετε ένα σφάλμα. Εάν δεν πραγματοποιείται χειρισμός ενός σφάλματος στον τύπο όπου το αντιμετωπίσατε, το σφάλμα μεταβιβάζεται μέχρι τον χειριστή App.OnError. Δεν μπορείτε να αντικαταστήσετε το σφάλμα επειδή παρουσιάστηκε ήδη και αποτελεί μέρος των υπολογισμών τύπων. Ωστόσο, μπορείτε να χρησιμοποιήσετε το App.OnError για να ελέγξετε τον τρόπο με τον οποίο αναφέρεται το σφάλμα στον τελικό χρήστη, συμπεριλαμβανομένης της διακοπής της αναφοράς του σφάλματος. Το App.OnError παρέχει επίσης ένα κοινό σημείο αποκοπής για την αναφορά σφαλμάτων σε ολόκληρη την εφαρμογή.
- Δημιουργήστε και επαναπροκαλέστε ένα σφάλμα. Τέλος, μπορεί να εντοπίσετε μια συνθήκη σφάλματος με τη δική σας λογική, μια συνθήκη που είναι συγκεκριμένη για την εφαρμογή σας. Χρησιμοποιήστε τη συνάρτηση Error για να δημιουργήσετε προσαρμοσμένα σφάλματα. Χρησιμοποιήστε τη συνάρτηση Error για να επαναφέρετε ένα σφάλμα μετά από ανάκριση στο IfError ή στο App.OnError.
Πώς να ξεκινήσετε
Ας ξεκινήσουμε με ένα απλό παράδειγμα.
- Δημιουργήστε μια νέα οθόνη σε μια εφαρμογή καμβά Power Apps.
- Εισαγάγετε ένα στοιχείο ελέγχου TextInput. Η προεπιλογή είναι το όνομα TextInput1.
- Εισαγάγετε ένα στοιχείο ελέγχου Label.
- Επιλέξτε την ιδιότητα Text του στοιχείου ελέγχου Label στον τύπο
1/Value( TextInput1.Text )
Εμφανίζεται ένα σφάλμα, επειδή το προεπιλεγμένο κείμενο ενός στοιχείου ελέγχου TextInput είναι "Text input", το οποίο δεν μπορεί να μετατραπεί σε αριθμό. Από προεπιλογή, αυτό είναι καλό: ο τελικός χρήστης λαμβάνει μια ειδοποίηση ότι κάτι δεν λειτουργεί όπως αναμένεται στην εφαρμογή.
Προφανώς, δεν θέλετε ένα σφάλμα να χαιρετά τον χρήστη κάθε φορά που ξεκινά αυτή την εφαρμογή. Το πιθανότερο το "Text input" δεν είναι η σωστή προεπιλογή για πλαίσιο εισαγωγής κειμένου ούτως ή άλλως. Για να διορθώσετε αυτό το πρόβλημα, αλλάξτε την ιδιότητα Default του στοιχείου ελέγχου TextInput σε:
Blank()
Τώρα βλέπετε ένα διαφορετικό σφάλμα. Μαθηματικές πράξεις με κενό, όπως διαίρεση, εξαναγκάζουν την κενή τιμή σε μηδέν. Αυτή η τιμή προκαλεί σφάλμα διαίρεσης με μηδέν. Για να διορθώσετε αυτό το πρόβλημα, πρέπει να αποφασίσετε ποια είναι η κατάλληλη συμπεριφορά για αυτήν την κατάσταση σε αυτήν την εφαρμογή. Η απάντηση μπορεί να είναι να εμφανίζεται κενό όταν η εισαγωγή κειμένου είναι κενή. Μπορείτε να επιτύχετε αυτόν τον στόχο με την περιτύλιξη του τύπου σας με τη συνάρτηση IfError :
IfError( 1/Value( TextInput1.Text ), Blank() )
Τώρα, το σφάλμα αντικαθίσταται με μια έγκυρη τιμή και το πλαίσιο σφάλματος εξαφανίζεται. Ωστόσο, μπορεί να έχετε υπερβάλατε, η συνάρτηση IfError που χρησιμοποιήσατε καλύπτει όλα τα σφάλματα, συμπεριλαμβανομένης της εισαγωγής μιας εσφαλμένης τιμής, όπως "hello". Μπορείτε να αντιμετωπίσετε αυτό το πρόβλημα ρυθμίζοντας το IfError ώστε να χειριστείτε μόνο την περίπτωση διαίρεσης με το μηδέν και να επαναφέρετε όλα τα άλλα σφάλματα:
IfError( 1/Value( TextInput1.Text ),
If( FirstError.Kind = ErrorKind.Div0, Blank(), Error( FirstError ) ) )
Επομένως, εκτελέστε την εφαρμογή σας και δοκιμάστε ορισμένες διαφορετικές τιμές.
Χωρίς καμία τιμή, όπως όταν ξεκινά η εφαρμογή, δεν εμφανίζεται απάντηση καθώς η προεπιλεγμένη τιμή είναι κενή, αλλά δεν εμφανίζεται κανένα σφάλμα καθώς το IfError αντικαθιστά τη διαίρεση με μηδενικό σφάλμα.
Εάν πληκτρολογήσετε ένα 4, λαμβάνετε το αναμενόμενο αποτέλεσμα 0,25:
Αν πληκτρολογήσετε κάτι παράνομο, όπως hello, θα λάβετε ένα πλαίσιο σφάλματος:
Αυτό είναι ένα απλό εισαγωγικό παράδειγμα. Μπορείτε να χειριστείτε σφάλματα με πολλούς διαφορετικούς τρόπους, ανάλογα με τις ανάγκες της εφαρμογής:
- Αντί για ένα πλαίσιο σφάλματος, θα μπορούσατε να εμφανίσετε το "#Error" στο στοιχείο ελέγχου ετικέτας με τον τύπο. Για να διατηρήσετε τους τύπους των αντικαταστάσεων συμβατούς με το πρώτο όρισμα στη συνάρτηση IfError, πρέπει να μετατρέψετε ρητά το αριθμητικό αποτέλεσμα σε μια συμβολοσειρά κειμένου χρησιμοποιώντας τη συνάρτηση Text .
IfError( Text( 1/Value( TextInput1.Text ) ), If( FirstError.Kind = ErrorKind.Div0, Blank(), "#Error" )
- Αντί να περιτυλίξετε αυτή τη συγκεκριμένη παρουσία με το IfError, μπορείτε να συντάξετε έναν κεντρικό χειρισμό App.OnError . Δεν μπορείτε να αντικαταστήσετε τη συμβολοσειρά που εμφανίζεται με "#Error", καθώς το σφάλμα παρουσιάστηκε ήδη και το App.OnError παρέχεται μόνο για τον έλεγχο της αναφοράς.
If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ) )
Μετάδοση σφαλμάτων
Τα σφάλματα περνούν μέσα από τύπους όπως και στο Excel. Για παράδειγμα, στο Excel, εάν το κελί A1 έχει τον τύπο =1/0, τότε το A1 εμφανίζει την τιμή #DIV0!σφάλματος :
Εάν το κελί A2 αναφέρεται σε A1 έναν τύπο όπως =A1*2, το σφάλμα μεταδίδεται επίσης μέσω αυτού του τύπου:
Το σφάλμα αντικαθιστά την τιμή που θα υπολόγιζε διαφορετικά ο τύπος. Δεν υπάρχει αποτέλεσμα για τον πολλαπλασιασμό στο κελί A2, παρά μόνο το σφάλμα από τη διαίρεση στο A1.
Το Power Fx λειτουργεί με τον ίδιο τρόπο. Σε γενικές γραμμές, εάν παρέχετε ένα σφάλμα ως όρισμα σε μια συνάρτηση ή τελεστή, η λειτουργία δεν πραγματοποιείται. Το σφάλμα εισόδου μεταφέρεται ως αποτέλεσμα της λειτουργίας. Για παράδειγμα, Mid( Text( 1/0 ), 1, 1 ) επιστρέφει ένα σφάλμα Διαίρεση με μηδέν, καθώς το εσωτερικό μεγαλύτερο σφάλμα διέρχεται από τη συνάρτηση Text και τη συνάρτηση Mid :
Σε γενικές γραμμές, τα σφάλματα δεν περνούν μέσα από τις ιδιότητες στοιχείου ελέγχου του Power Apps. Ας επεκτείνουμε το προηγούμενο παράδειγμα με ένα άλλο στοιχείο ελέγχου που εμφανίζεται εάν η ιδιότητα της Text πρώτης ετικέτας είναι μια κατάσταση σφάλματος:
Δεν υπάρχει πρόβλημα να μην μεταδίδονται σφάλματα μέσω ενός στοιχείου ελέγχου, επειδή το σύστημα παρατηρεί σφάλματα στην είσοδο σε όλες τις ιδιότητες στοιχείου ελέγχου. Το σφάλμα δεν χάνεται.
Οι περισσότερες συναρτήσεις και τελεστές ακολουθούν τον κανόνα "error in, error out", αλλά υπάρχουν ορισμένες εξαιρέσεις. Οι συναρτήσεις IsError, IsErrorOrBlank και IfError έχουν σχεδιαστεί για εργασία με σφάλματα, επομένως ενδέχεται να μην επιστρέψουν σφάλμα ακόμη και αν κάποιος μεταβιβαστεί σε αυτές.
Παρατήρηση σφαλμάτων
Το Power Fx δεν παρατηρεί σφάλματα μέχρι ο τύπος να χρησιμοποιήσει την τιμή σφάλματος.
Κατά συνέπεια, οι συναρτήσεις If και Select ενδέχεται να μην επιστρέψουν σφάλμα εάν μεταβιβαστεί κάποια. Λάβετε υπόψη τον τύπο If( false, 1/0, 3 ). Υπάρχει ένα σφάλμα διαίρεσης με μηδέν σε αυτόν τον τύπο, αλλά δεδομένου ότι η συνάρτηση If δεν λαμβάνει αυτόν τον κλάδο λόγω της συνθήκης false, το Power Fx και Power Apps δεν αναφέρουν σφάλμα:
Η χρήση της συνάρτησης Set με σφάλμα δεν αναφέρει σφάλμα στο σημείο που τοποθετείται το σφάλμα στη μεταβλητή. Για παράδειγμα, σε Power Apps, ακολουθεί ένας τύπος στο App.OnStart που τοποθετεί ένα σφάλμα διαίρεσης με μηδέν στη μεταβλητή x:
Δεν γίνεται αναφορά σφάλματος, επειδή το x δεν αναφέρεται. Ωστόσο, τη στιγμή που προσθέτετε ένα στοιχείο ελέγχου ετικέτας και ορίζετε την ιδιότητά του Text σε x, εμφανίζεται το σφάλμα:
Μπορείτε να παρατηρήσετε σφάλματα μέσα σε έναν τύπο χρησιμοποιώντας τις συναρτήσεις IfError, IsError και IsErrorOrBlank . Χρησιμοποιώντας αυτές τις συναρτήσεις, μπορείτε να επιστρέψετε μια εναλλακτική τιμή, να κάνετε μια εναλλακτική ενέργεια ή να τροποποιήσετε το σφάλμα προτού παρατηρηθεί και αναφερθεί.
Αναφορά σφαλμάτων
Όταν το Power Fx παρατηρήσει ένα σφάλμα, το επόμενο βήμα είναι να αναφέρετε το σφάλμα στον τελικό χρήστη.
Σε αντίθεση με το Excel, δεν υπάρχει πάντα ένα βολικό σημείο για την εμφάνιση ενός αποτελέσματος σφάλματος, καθώς το αποτέλεσμα ενός τύπου μπορεί να οδηγεί μια ιδιότητα όπως οι συντεταγμένες X και Y ενός στοιχείου ελέγχου για το οποίο δεν υπάρχει βολικό σημείο για να εμφανίσετε κάποιο κείμενο. Κάθε κεντρικός υπολογιστής Power Fx ελέγχει τον τρόπο με τον οποίο εμφανίζονται εντέλει τα σφάλματα στον τελικό χρήστη και το πλήθος των στοιχείων ελέγχου που διαθέτει ο δημιουργός σε αυτήν τη διεργασία. Στο Power Apps, εμφανίζεται ένα διαφημιστικό πλαίσιο σφάλματος και το App.OnError χρησιμοποιείται για τον έλεγχο του πώς αναφέρεται το σφάλμα.
Είναι σημαντικό να σημειωθεί ότι το App.OnError δεν μπορεί να αντικαταστήσει το σφάλμα με τον ίδιο τρόπο που μπορεί να το αντικαταστήσει το IfError . Στο σημείο που εκτελείται το App.OnError , το σφάλμα έχει ήδη συμβεί και το αποτέλεσμα μεταδίδεται μέσω άλλων τύπων. Το App.OnError ελέγχει μόνο τον τρόπο αναφοράς του σφάλματος στον τελικό χρήστη και παρέχει ένα άγκιστρο στον κατασκευαστή για να καταγράψει το σφάλμα, εάν το επιθυμεί.
Οι μεταβλητές πεδίου FirstError και AllErrors παρέχουν πληροφορίες περιβάλλοντος σχετικά με το σφάλμα ή τα σφάλματα. Αυτό το περιβάλλον παρέχει πληροφορίες σχετικά με το είδος του σφάλματος, την προέλευση του σφάλματος και την τοποθεσία όπου παρατηρήθηκε.
Διακοπή μετά από ένα σφάλμα
Οι τύποι συμπεριφοράς υποστηρίζουν την ανάληψη ενεργειών, την τροποποίηση βάσεων δεδομένων και την αλλαγή κατάστασης. Αυτοί οι τύποι επιτρέπουν την ολοκλήρωση περισσότερων από μία ενεργειών με τη σειρά χρησιμοποιώντας τον ; τελεστή αλληλουχίας (ή ;; ανάλογα με τις τοπικές ρυθμίσεις).
Σε αυτήν την περίπτωση, για παράδειγμα, το στοιχείο ελέγχου πλέγματος εμφανίζει τι υπάρχει στον T πίνακα. Κάθε κουμπί που επιλέγετε αλλάζει την κατάσταση σε αυτόν τον πίνακα με δύο κλήσεις Patch:
Σε έναν τύπο αλυσιδωτής συμπεριφοράς, οι ενέργειες δεν σταματούν μετά το πρώτο σφάλμα. Ας τροποποιήσουμε το δικό μας παράδειγμα για να μεταβιβάσουμε έναν μη έγκυρο αριθμό ευρετηρίου στην πρώτη κλήση Patch. Το δεύτερο Patch συνεχίζεται παρά το προηγούμενο σφάλμα. Το πρώτο σφάλμα αναφέρεται στον τελικό χρήστη και εμφανίζεται ως σφάλμα στο Studio στο στοιχείο ελέγχου:
Χρησιμοποιήστε τη συνάρτηση IfError για να διακόψετε την εκτέλεση μετά από ένα σφάλμα. Όπως και με τη συνάρτηση If , το τρίτο όρισμα σε αυτήν τη συνάρτηση παρέχει ένα σημείο για την τοποθέτηση ενεργειών οι οποίες θα πρέπει να εκτελεστούν μόνο εάν δεν υπάρχει σφάλμα:
Εάν παρουσιαστεί σφάλμα κατά τη διάρκεια μίας από τις επαναλήψεις της ForAll, οι υπόλοιπες επαναλήψεις δεν σταματούν. Το ForAll έχει σχεδιαστεί για να εκτελεί κάθε επανάληψη ανεξάρτητα, επιτρέποντας την παράλληλη εκτέλεση. Όταν ολοκληρωθεί η συνάρτηση ForAll , επιστρέφεται ένα σφάλμα, το οποίο περιέχει όλα τα σφάλματα που παρουσιάστηκαν (εξετάζοντας την AllErrors στο IfError ή στο App.OnError).
Για παράδειγμα, ο παρακάτω τύπος έχει ως αποτέλεσμα η συνάρτηση ForAll να επιστρέψει δύο σφάλματα (για τη διαίρεση με το μηδέν για Value 0, δύο φορές) και Collection έχει τρεις εγγραφές (για όταν Value δεν είναι 0): [1, 2, 3].
Clear( Collection );
ForAll( [1,0,2,0,3], If( 1/Value > 0, Collect( Collection, Value ) ) );
Εργασία με πολλά σφάλματα
Καθώς ένας τύπος συμπεριφοράς μπορεί να εκτελέσει περισσότερες από μία ενέργειες, μπορεί επίσης να αντιμετωπίσει περισσότερα από ένα σφάλματα.
Από προεπιλογή, η εφαρμογή αναφέρει το πρώτο σφάλμα στον τελικό χρήστη. Σε αυτό το παράδειγμα, αποτυγχάνουν και οι δύο κλήσεις Patch , αλλά η δεύτερη κλήση αποτυγχάνει με σφάλμα διαίρεσης με μηδέν. Ο χρήστης βλέπει μόνο το πρώτο σφάλμα σχετικά με το ευρετήριο:
Η συνάρτηση IfError και η App.OnError μπορούν να έχουν πρόσβαση σε όλα τα σφάλματα που παρουσιάστηκαν χρησιμοποιώντας τη μεταβλητή εμβέλειας AllErrors . Σε αυτή την περίπτωση, μπορείτε να ορίσετε αυτή τη μεταβλητή σε μια καθολική μεταβλητή και να εξετάσετε και τα δύο σφάλματα που παρουσιάστηκαν. Εμφανίζονται στον πίνακα με την ίδια σειρά με την οποία απαντούν:
Μη συμπεριφορικοί τύποι μπορούν επίσης να επιστρέψουν πολλαπλά σφάλματα. Για παράδειγμα, η χρήση της συνάρτησης Patchμε μια δέσμη καρτελών για ενημέρωση μπορεί να επιστρέψει πολλά σφάλματα, ένα για κάθε καρτέλα που αποτυγχάνει.
Σφάλματα σε πίνακες
Όπως είδατε νωρίτερα, μπορείτε να αποθηκεύσετε σφάλματα σε μεταβλητές. Μπορείτε επίσης να συμπεριλάβετε σφάλματα σε δομές δεδομένων, όπως πίνακες. Αυτή η προσέγγιση είναι σημαντική καθώς εξασφαλίζει ότι ένα σφάλμα σε οποιαδήποτε εγγραφή δεν μπορεί να ακυρώσει ολόκληρο τον πίνακα.
Για παράδειγμα, εξετάστε αυτό το στοιχείο ελέγχου πίνακα δεδομένων στο Power Apps:
Ο υπολογισμός στην AddColumns αντιμετώπισε σφάλμα διαίρεσης με μηδέν για μία από τις τιμές. Για αυτήν την καρτέλα, η στήλη Reciprocal έχει μια τιμή σφάλματος (διαίρεση με το μηδέν), αλλά οι άλλες καρτέλες δεν έχουν και είναι μια χαρά.
IsError( Index( output, 2 ) ) Επιστρέφει false και IsError( Index( output, 2 ).Value ) επιστρέφει true.
Εάν παρουσιαστεί σφάλμα κατά το φιλτράρισμα ενός πίνακα, ολόκληρη η εγγραφή είναι ένα σφάλμα. Η λειτουργία εξακολουθεί να επιστρέφει την εγγραφή στο αποτέλεσμα, έτσι ώστε ο τελικός χρήστης να γνωρίζει ότι κάτι ήταν εκεί και υπάρχει ένα πρόβλημα.
Δείτε αυτό το παράδειγμα. Εδώ, ο αρχικός πίνακας δεν έχει σφάλματα, αλλά η ενέργεια του φιλτραρίσματος δημιουργεί σφάλμα όταν το Value ισούται με 0:
Οι τιμές -5 και -3 φιλτράρονται σωστά. Οι τιμές 0 οδηγούν σε σφάλμα στην επεξεργασία του φίλτρου και έτσι δεν είναι σαφές εάν η καρτέλα πρέπει να συμπεριληφθεί ή όχι στο αποτέλεσμα. Για μεγιστοποίηση της διαφάνειας για τους τελικούς χρήστες και τους δημιουργούς βοήθειας για τον εντοπισμό σφαλμάτων, η λειτουργία περιλαμβάνει μια εγγραφή σφάλματος αντί για την αρχική. Σε αυτήν την περίπτωση, το IsError( Index( output, 2 ) ) επιστρέφει true.
Σφάλματα προέλευσης δεδομένων
Οι συναρτήσεις που τροποποιούν δεδομένα σε προελεύσεις δεδομένων, όπως Patch, Collect, Remove, RemoveIf, Update, UpdateIf, και SubmitForm αναφέρουν σφάλματα με δύο τρόπους:
- Κάθε μία από αυτές τις συναρτήσεις επιστρέφει μια τιμή σφάλματος ως αποτέλεσμα της λειτουργίας. Μπορείτε να εντοπίσετε σφάλματα χρησιμοποιώντας το IsError και να αντικαταστήσετε ή να αποκρύψετε σφάλματα, χρησιμοποιώντας τα IfError και App.OnError ως συνήθως.
- Μετά τη λειτουργία, η συνάρτηση Errors επιστρέφει επίσης τα σφάλματα για προηγούμενες λειτουργίες. Αυτή η συμπεριφορά μπορεί να είναι χρήσιμη για την εμφάνιση του μηνύματος σφάλματος σε μια οθόνη φόρμας χωρίς να χρειάζεται να καταγράψετε το σφάλμα σε μια μεταβλητή κατάστασης.
Για παράδειγμα, αυτός ο τύπος ελέγχει για ένα σφάλμα από τη συνάρτηση Collect και εμφανίζει ένα προσαρμοσμένο μήνυμα σφάλματος:
IfError( Collect( Names, { Name: "duplicate" } ),
Notify( $"OOPS: { FirstError.Message }", NotificationType.Warning ) )
Η συνάρτηση Errors επιστρέφει επίσης πληροφορίες σχετικά με σφάλματα του παρελθόντος κατά τις πράξεις χρόνου εκτέλεσης. Μπορεί να είναι χρήσιμο για την εμφάνιση ενός σφάλματος σε μια οθόνη φόρμας χωρίς να χρειάζεται να καταγράψετε το σφάλμα σε μια μεταβλητή κατάστασης.
Αλλαγή σφαλμάτων
Ορισμένες φορές περιμένετε πιθανά σφάλματα και μπορείτε να τα αγνοήσετε με ασφάλεια. Στο εσωτερικό των IfError και App.OnError, εάν εντοπιστεί ένα σφάλμα που θα πρέπει να μεταβιβαστεί στον επόμενο υψηλότερο χειρισμό, θα τον επαναφέρετε χρησιμοποιώντας Error( AllErrors )το .
Δημιουργία των δικών σας σφαλμάτων
Μπορείτε επίσης να δημιουργήσετε τα δικά σας σφάλματα χρησιμοποιώντας τη συνάρτηση Error .
Εάν δημιουργήσετε τα δικά σας σφάλματα, χρησιμοποιήστε τιμές μεγαλύτερες από 1.000 για να αποφύγετε πιθανές διενέξεις με μελλοντικές τιμές σφάλματος συστήματος.
Τιμές απαρίθμησης του ErrorKind
| Απαρίθμηση ErrorKind | Τιμή | Περιγραφή |
|---|---|---|
| Σφάλμα Ανάλυσης | 18 | Σφάλμα συστήματος. Υπάρχει ένα πρόβλημα με την ανάλυση του μεταγλωττιστή. |
| BadLanguageCode | 14 | Χρησιμοποιήθηκε μη έγκυρος ή μη αναγνωρισμένος κωδικός γλώσσας. |
| BadRegex | 15 | Μη έγκυρη κανονική παράσταση. Ελέγξτε τη σύνταξη που χρησιμοποιείται με τις συναρτήσεις IsMatch, Match ή MatchAll. |
| Διένεξη | 6 | Η εγγραφή που ενημερώνετε έχει αλλάξει ήδη στην προέλευση και πρέπει να επιλύσετε τη διένεξη. Μια συνήθης λύση είναι η αποθήκευση τυχόν τοπικών αλλαγών, η ανανέωση της καρτέλας και η εκ νέου εφαρμογή των αλλαγών. |
| Περιορισμός που έχει παραβιαστεί | 8 | Η εγγραφή δεν πέρασε τον έλεγχο περιορισμού στο διακομιστή. |
| Δημιουργία δυνατότητας | 3 | Δεν έχετε δικαίωμα δημιουργίας μιας εγγραφής για την προέλευση δεδομένων. Για παράδειγμα, η συνάρτηση Collect καλείται. |
| ΔιαγραφήΔικαιωμάτων | 5 | Δεν έχετε δικαίωμα διαγραφής μιας εγγραφής για την προέλευση δεδομένων. Για παράδειγμα, η συνάρτηση Remove καλείται. |
| Div0 | 13 | Διαίρεση με το μηδέν. |
| EditPermissions | 4 | Δεν έχετε δικαίωμα δημιουργίας μιας εγγραφής για την προέλευση δεδομένων. Για παράδειγμα, η συνάρτηση Patch καλείται. |
| ΠαραγόμενηΤιμή | 9 | Μια τιμή μεταβιβάστηκε εσφαλμένα στον διακομιστή για ένα πεδίο που υπολογίζει αυτόματα ο διακομιστής. |
| Μη έγκυρη χρήση συνάρτησης | 16 | Μη έγκυρη χρήση μιας συνάρτησης. Συχνά ένα ή περισσότερα ορίσματα της συνάρτησης είναι εσφαλμένα ή χρησιμοποιούνται με μη έγκυρο τρόπο. |
| Αρχείο Δεν Βρέθηκε | 17 | Ο χώρος αποθήκευσης SaveData δεν μπορούσε να βρεθεί. |
| Μη επαρκής μνήμη | 21 | Δεν υπάρχει αρκετή μνήμη ή χώρος αποθήκευσης στη συσκευή για τη λειτουργία. |
| Μη έγκυρη παράμετρος | 25 | Ένα μη έγκυρο όρισμα μεταβιβάστηκε σε μια συνάρτηση. |
| Εσωτερικός | 26 | Σφάλμα συστήματος. Υπάρχει ένα εσωτερικό πρόβλημα με μία από τις συναρτήσεις. |
| Λείπει το "Δεν υπάρχει" | 2 | Λείπει ένα απαιτούμενο πεδίο μιας εγγραφής. |
| Δίκτυο | 23 | Υπάρχει ένα πρόβλημα με τις επικοινωνίες δικτύου. |
| Κανένας | 0 | Σφάλμα συστήματος. Δεν υπάρχει σφάλμα. |
| Δεν ισχύει | 27 | Δεν υπάρχει διαθέσιμη τιμή. Αυτό το σφάλμα είναι χρήσιμο για τη διαφοροποίηση μιας κενής τιμής που μπορεί να θεωρηθεί ως μηδέν σε αριθμητικούς υπολογισμούς, από κενές τιμές που θα πρέπει να επισημαίνονται ως πιθανό πρόβλημα εάν χρησιμοποιηθεί η τιμή. |
| ** Δεν βρέθηκε | 7 | Δεν ήταν δυνατή η εύρεση της εγγραφής. Για παράδειγμα, η εγγραφή που θα τροποποιηθεί στη συνάρτηση Patch. |
| Δεν υποστηρίζεται | 20 | Η πράξη δεν υποστηρίζεται από αυτόν τον παίκτη ή τη συσκευή. |
| Αριθμός | 24 | Μια αριθμητική συνάρτηση χρησιμοποιήθηκε με ακατάλληλο τρόπο. Για παράδειγμα, Sqrt με -1. |
| Υπέρβαση Ποσόστωσης | 22 | Υπέρβαση στόχων πωλήσεων χώρου αποθήκευσης. |
| ReadOnlyValue | 10 | Η στήλη είναι μόνο για ανάγνωση και δεν είναι δυνατό να τροποποιηθεί. |
| Δικαιώματα ανάγνωσης | 19 | Δεν έχετε δικαίωμα ανάγνωσης εγγραφών για την προέλευση δεδομένων. |
| Συγχρονισμός | 1 | Η προέλευση δεδομένων ανέφερε ένα σφάλμα. Ελέγξτε τη στήλη "Μήνυμα" για περισσότερες πληροφορίες. |
| Άγνωστο | 12 | Υπήρξε ένα σφάλμα, αλλά ήταν αγνώστου είδους. |
| Επικύρωση | 11 | Η εγγραφή δεν πέρασε τον έλεγχο επικύρωσης. |