Κοινοποίηση μέσω


Error, IfError, IsError, IsBlankOrError συναρτήσεις

Functions Ισχύει για
Error
IfError
IsError
Εφαρμογές καμβά Το Copilot Studio Desktop ροών στηλών τύπου Dataverse Εφαρμογές βάσει μοντέλου Συναρτήσεις του power Platform CLI Dataverse στο Power Pages
IsBlankOrError Εφαρμογές καμβά Copilot Studio Desktop ροές Εφαρμογές βάσει μοντέλου Συναρτήσεις Power Platform CLI Dataverse Στο Power Pages

Εντοπίζει σφάλματα και παρέχει μια εναλλακτική τιμή ή εκτελεί μια ενέργεια. Δημιουργήστε ένα προσαρμοσμένο σφάλμα ή διαβιβάστε ένα σφάλμα.

Σημείωμα

Εάν μια εφαρμογή έχει απενεργοποιήσει τη δυνατότητα διαχείρισης σφαλμάτων σε επίπεδο τύπου στην περιοχή Οι ενημερώσεις>ρυθμίσεων>αποσύρθηκαν, αυτές οι λειτουργίες δεν θα λειτουργούν σωστά.

IfError

Η IfError συνάρτηση ελέγχει τιμές μέχρι να εντοπίσει ένα σφάλμα. Εάν η συνάρτηση ανακαλύψει ένα σφάλμα, η συνάρτηση αξιολογεί και αποδίδει μια αντίστοιχη τιμή αντικατάστασης και σταματάει την περαιτέρω αξιολόγηση. Μπορεί επίσης να δοθεί μια προεπιλεγμένη τιμή για την περίπτωση που δεν βρεθούν σφάλματα. Η δομή του IfError μοιάζει με εκείνη της συνάρτησης If : IfError ελέγχει για σφάλματα, ενώ η συνάρτηση If ελέγχει για true.

Χρησιμοποιήστε IfError το για να αντικαταστήσετε ένα σφάλμα με μια έγκυρη τιμή, έτσι ώστε να μπορούν να συνεχιστούν οι μεταγενέστεροι υπολογισμοί. Για παράδειγμα, χρησιμοποιήστε αυτήν τη συνάρτηση εάν τα δεδομένα εισόδου του χρήστη έχουν ως αποτέλεσμα μια διαίρεση με το μηδέν:

IfError( 1/x, 0 )

Αυτός ο τύπος επιστρέφει 0 εάν η τιμή του x είναι μηδέν, καθώς 1/x παράγει ένα σφάλμα. Εάν το x δεν είναι μηδέν, τότε επιστρέφεται το 1/x.

Διακοπή περαιτέρω επεξεργασίας

Κατά την αλληλουχία τύπων μαζί σε τύπους συμπεριφοράς, όπως:

Patch( DS1, ... );
Patch( DS2, ... )

Η δεύτερη συνάρτηση Patch σε DS2 θα επιχειρηθεί, ακόμα και εάν η Patch σε DS1 αποτύχει. Το πεδίο ενός σφάλματος περιορίζεται σε κάθε τύπο που είναι αλυσωτός.

Χρησιμοποιήστε IfError την για να κάνετε μια ενέργεια και συνεχίστε την επεξεργασία μόνο εάν η ενέργεια ολοκληρώθηκε με επιτυχία. IfError Εφαρμογή σε αυτό το παράδειγμα:

IfError(
    Patch( DS1, ... ), Notify( "problem in the first action" ),
    Patch( DS2, ... ), Notify( "problem in the second action" )
)

Εάν το Patch του DS1 έχει κάποιο πρόβλημα, εκτελείται η πρώτη Ειδοποίηση. Δεν γίνεται καμία περαιτέρω επεξεργασία συμπεριλαμβανομένου του δεύτερου Patch του DS2. Εάν η πρώτη Patch επιτύχει, η δεύτερη Patch θα εκτελεστεί.

Εάν παρέχεται, επιστρέφεται το προαιρετικό όρισμα DefaultResult εάν δεν εντοπιστούν σφάλματα. Χωρίς αυτό το όρισμα, επιστρέφεται το τελευταίο όρισμα Value.

Με βάση το τελευταίο παράδειγμα, μπορείτε να ελέγξετε την τιμή επιστροφής από IfError το για να προσδιορίσετε εάν υπήρχαν προβλήματα:

IfError(
    Patch( DS1, ... ), Notify( "problem in the first action" );  false,
    Patch( DS2, ... ), Notify( "problem in the second action" ); false,
    true
)

Συμβατότητα τύπου

IfError Η επιστρέφει την τιμή ενός από τα ορίσματά της. Οι τύποι όλων των τιμών που μπορεί να επιστραφούν από IfError πρέπει να είναι συμβατοί.

Στο τελευταίο παράδειγμα, η ενημερωμένη έκδοση κώδικα επιστρέφει μια εγγραφή που δεν είναι συμβατή με τα Booleans που χρησιμοποιούνται για τους τύπους αντικατάστασης ή το DefaultResult. Το οποίο είναι εντάξει, καθώς δεν υπάρχει καμία περίπτωση στην οποία η τιμή επιστροφής από αυτές τις κλήσεις Patch θα επιστραφεί από IfErrorτη συνάρτηση .

Σημείωμα

Ενώ η συμπεριφορά είναι σε εξέλιξη για μια αλλαγή, οι τύποι όλων των ορισμάτων πρέπει να IfError είναι συμβατοί προς το παρόν.

Στο απλό παράδειγμα που περιγράφεται παραπάνω:

IfError( 1/x, 0 )

Οι τύποι 1/x και 0 ήταν συμβατοί ωσάν και οι δύο να ήταν αριθμοί. Εάν δεν είναι, το δεύτερο όρισμα εξαναγκάζεται να ταιριάζει με τον τύπο του πρώτου ορίσματος.

Οθόνες Excel#DIV/0! όταν συμβαίνει διαίρεση με το μηδέν.

Εξετάστε IfError το ενδεχόμενο με τα παρακάτω αντί για αυτό:

IfError( 1/x, "#DIV/0!" )

Ο τύπος που προαναφέρεται δεν θα λειτουργεί. Η συμβολοσειρά "#DIV/0!" κειμένου εξαναγκάζεται στον τύπο του πρώτου ορίσματος στη IfError, η οποία είναι ένας αριθμός. Το αποτέλεσμα είναι IfError ένα ακόμη σφάλμα, καθώς δεν είναι δυνατή η επιβολή της συμβολοσειράς κειμένου. Ως επιδιόρθωση, μετατρέψτε το πρώτο όρισμα σε μια συμβολοσειρά κειμένου, έτσι ώστε IfError να επιστρέφει πάντα μια συμβολοσειρά κειμένου:

IfError( Text( 1/x ), "#DIV/0!" )

Όπως αναφέρθηκε παραπάνω, IfError μπορεί να επιστρέψει ένα σφάλμα εάν το στοιχείο Αντικατάσταση ή DefaultResult είναι σφάλμα.

FirstError / AllErrors

Μέσα στους τύπους αντικατάστασης, οι πληροφορίες σχετικά με τα σφάλματα που εντοπίστηκαν είναι διαθέσιμες μέσω της καρτέλας FirstError και του πίνακα AllErrors. Το AllErrors είναι ένας πίνακας εγγραφών πληροφοριών σφάλματος με το FirstError να είναι μια συντόμευση για την πρώτη εγγραφή αυτού του πίνακα. Η συνάρτηση FirstError επιστρέφει πάντα την ίδια τιμή με την First( AllErrors ).

Error οι εγγραφές περιλαμβάνουν:

Πεδίο Τύπος Description
Είδος Απαρίθμηση ErrorKind (αριθμός) Κατηγορία του σφάλματος.
Μήνυμα Συμβολοσειρά κειμένου Μήνυμα σχετικά με το σφάλμα, κατάλληλο για εμφάνιση στον τελικό χρήστη.
Πηγή Συμβολοσειρά κειμένου Θέση από την οποία προήλθε το σφάλμα, που χρησιμοποιείται για αναφορά. Για παράδειγμα, για έναν τύπο συνδεδεμένο με μια ιδιότητα στοιχείου ελέγχου, αυτή η τιμή έχει τη μορφή ControlName.PropertyName.
Παρατηρηθεί Συμβολοσειρά κειμένου Θέση στην οποία εμφανίζεται το σφάλμα στο χρήστη, που χρησιμοποιείται για τη σύνταξη αναφορών. Για παράδειγμα, για έναν τύπο συνδεδεμένο με μια ιδιότητα στοιχείου ελέγχου, αυτή η τιμή έχει τη μορφή ControlName.PropertyName.
Λεπτομέρειες Εγγραφή Λεπτομέρειες σχετικά με το σφάλμα. Προς το παρόν, παρέχονται λεπτομέρειες μόνο για σφάλματα δικτύου. Αυτή η καρτέλα περιλαμβάνει HttpStatusCode, που περιέχει τον κωδικό κατάστασης HTTP και το HttpResponse, που περιέχει το σώμα της απόκρισης από τη σύνδεση ή την υπηρεσία.

Για παράδειγμα, εξετάστε τον ακόλουθο τύπο ως ιδιότητα OnSelect ενός στοιχείου ελέγχου Button:

Set( a, 1/0 )

Και αυτόν τον τύπο στην ιδιότητα OnSelect ενός δεύτερου στοιχείου ελέγχου Button:

IfError( a, Notify( "Internal error: originated on " & FirstError.Source & ", surfaced on " & FirstError.Observed ) )

Ο παραπάνω τύπος παραδείγματος θα εμφανίσει το παρακάτω πλαίσιο μηνύματος όταν τα δύο κουμπιά ενεργοποιηθούν με τη σειρά:

Ενεργοποιημένο στοιχείο ελέγχου Button το οποίο εμφανίζει μια ειδοποίηση από τη συνάρτηση Notify.

Συνήθως, θα υπάρχει μόνο ένα σφάλμα με το οποίο το FirstError μπορεί να λειτουργήσει επαρκώς. Ωστόσο, υπάρχουν σενάρια όπου είναι δυνατό να επιστραφούν πολλαπλά σφάλματα. Για παράδειγμα, όταν χρησιμοποιείτε έναν τελεστή σύνδεσης σε αλυσίδα τύπων ή τη συνάτηση Concurrent. Ακόμη και σε αυτές τις περιπτώσεις, η αναφορά του FirstError μπορεί να είναι αρκετή για να αποκαλυφθεί ένα πρόβλημα, αντί να υπερφορτωθεί ένας χρήστης με πολλά σφάλματα. Εάν εξακολουθείτε να έχετε μια απαίτηση να εργάζεστε με κάθε σφάλμα ξεχωριστά, μπορείτε να χρησιμοποιήσετε τον πίνακα AllErrors.

IsError

Η IsError συνάρτηση ελέγχει για μια τιμή σφάλματος.

Η τιμή επιστροφής είναι μια δυαδική τιμή true ή false.

Η χρήση IsError αποτρέπει τυχόν περαιτέρω επεξεργασία του σφάλματος.

IsBlankOrError

Η IsBlankOrError συνάρτηση ελέγχει είτε για μια κενή τιμή είτε για μια τιμή σφάλματος και είναι το ισοδύναμο της Or( IsBlank( X ), IsError( X ) ).

Όταν ενεργοποιείτε τον χειρισμό σφαλμάτων για υπάρχουσες εφαρμογές, εξετάστε το ενδεχόμενο να αντικαταστήσετε τη συνάρτηση IsBlank με IsBlankOrError για να διατηρήσετε την υπάρχουσα συμπεριφορά της εφαρμογής. Πριν από την προσθήκη του χειρισμού σφαλμάτων, χρησιμοποιήθηκε μια κενή τιμή για την αναπαράσταση τόσο μηδενικών τιμών από βάσεις δεδομένων όσο και τιμών σφάλματος. Error Ο χειρισμός διαχωρίζει αυτές τις δύο ερμηνείες κενών , οι οποίες θα μπορούσαν να αλλάξουν τη συμπεριφορά των υπαρχουσών εφαρμογών που συνεχίζουν να χρησιμοποιούν τη Συνάρτηση IsBlank.

Η τιμή επιστροφής είναι μια δυαδική τιμή true ή false.

Η χρήση IsBlankOrError αποτρέπει τυχόν περαιτέρω επεξεργασία του σφάλματος.

Χρησιμοποιήστε τη Error συνάρτηση για να δημιουργήσετε και να αναφέρετε ένα προσαρμοσμένο σφάλμα. Για παράδειγμα, μπορεί να έχετε λογική να καθορίσετε αν μια δεδομένη τιμή είναι έγκυρη για το περιβάλλον σας ή όχι - κάτι που δεν ελέγχεται αυτόματα για κάποιο πρόβλημα. Μπορείτε να δημιουργήσετε και να επιστρέψετε το δικό σας σφάλμα, με τις τιμές Kind και Message, χρησιμοποιώντας την ίδια εγγραφή που περιγράφεται παραπάνω για τη IfError συνάρτηση.

Στο περιβάλλον του IfError, χρησιμοποιήστε τη Error συνάρτηση για επαναφορά ή διαβίβαση ενός σφάλματος. Για παράδειγμα, η λογική σας στο IfError μπορεί να αποφασίσει ότι σε ορισμένες περιπτώσεις ένα σφάλμα μπορεί να αγνοηθεί με ασφάλεια, αλλά σε άλλες περιπτώσεις το σφάλμα είναι σημαντικό να αποσταλεί. Εντός IfError ή App.OnError, χρησιμοποιήστε Errorτο ( FirstError ) για να μεταβιβάσετε ένα σφάλμα.

Η Error συνάρτηση μπορεί επίσης να διαβιβαστεί με έναν πίνακα σφαλμάτων, όπως θα βρεθεί στον πίνακα AllErrors . Χρησιμοποιήστε Errorτο ( AllErrors ) για να επαναφέρετε όλα τα σφάλματα και όχι μόνο το πρώτο.

Μια κενή εγγραφή ή ένας κενός πίνακας που μεταβιβάζεται για να Error οδηγήσει σε κανένα σφάλμα.

Σύνταξη

Error( ErrorRecord )
Error( ErrorTable )

  • ErrorRecord – Απαιτείται. Error εγγραφή πληροφοριών, συμπεριλαμβανομένων των πεδίων Είδος, Μήνυμα και άλλα. Απαιτείται είδος . Το FirstError μπορεί να περάσει απευθείας.
  • ErrorTable – Απαιτείται. Πίνακας καρτελών πληροφοριών σφάλματος. Το AllErrors μπορεί να περάσει απευθείας.

IfError( Value1, Replacement1 [, Value2, Replacement2, ... [, DefaultResult ] ] )

  • Τιμές – Απαιτείται. Οι τύποι που θα ελεγχθούν για μια τιμή σφάλματος.
  • Αντικαταστάσεις – Απαιτείται. Οι τύποι που θα αξιολογηθούν και οι τιμές που θα επιστραφούν εάν τα ταιριαστά ορίσματα Τιμή επέστρεψαν σφάλμα.
  • DefaultResult – Προαιρετικό. Οι τύποι που πρέπει να αξιολογηθούν εάν ο τύπος δεν εντοπίσει σφάλματα.

IsError( Τιμή )
IsBlankOrError( Τιμή )

  • Τιμή – Απαιτείται. Τύπος για δοκιμή.

Παραδείγματα

Απλός IfError

Τύπος Description Αποτέλεσμα
IfError( 1, 2 ) Το πρώτο όρισμα δεν είναι σφάλμα. Η συνάρτηση δεν έχει άλλα σφάλματα για έλεγχο και καμία προεπιλεγμένη τιμή επιστροφής. Η συνάρτηση αποδίδει το όρισμα τελευταία τιμή που έχει αξιολογηθεί. 1
IfError( 1/0, 2 ) Το πρώτο όρισμα επιστρέφει μια τιμή σφάλματος (λόγω της διαίρεσης με το μηδέν). Η συνάρτηση αξιολογεί το δεύτερο όρισμα και το επιστρέφει ως αποτέλεσμα. 2
IfError( 10, 20, 30 ) Το πρώτο όρισμα δεν είναι σφάλμα. Η συνάρτηση δεν έχει άλλα σφάλματα για έλεγχο αλλά έχει προεπιλεγμένη τιμή επιστροφής. Η συνάρτηση επιστρέφει το όρισμα DefaultResult. 30
IfError( 10, 11, 20, 21, 300 ) Το πρώτο όρισμα 10 δεν αποτελεί σφάλμα, επομένως η συνάρτηση δεν αξιολογεί την αντίστοιχη αντικατάσταση 11 του ορίσματος. Το τρίτο όρισμα 20 επίσης δεν αποτελεί σφάλμα, επομένως η συνάρτηση δεν αξιολογεί την αντίστοιχη αντικατάσταση 21 του ορίσματος. Το πέμπτο όρισμα 300 δεν έχει αντίστοιχη αντικατάσταση και είναι το προεπιλεγμένο αποτέλεσμα. Η συνάρτηση επιστρέφει αυτό το αποτέλεσμα, επειδή ο τύπος δεν περιέχει σφάλματα. 300
IfError( 1/0, Notify( "Παρουσιάστηκε ένα εσωτερικό πρόβλημα" ) ) Το πρώτο όρισμα επιστρέφει μια τιμή σφάλματος (λόγω της διαίρεσης με το μηδέν). Η συνάρτηση αξιολογεί το δεύτερο όρισμα και εμφανίζει ένα μήνυμα στον χρήστη. Η τιμή επιστροφής του IfError είναι η τιμή επιστροφής της συνάρτησης Notify, με αναγκαστική μετατροπή στον ίδιο τύπο με το πρώτο όρισμα ( IfError αριθμός). 1

Απλός IsError

Τύπος Description Αποτέλεσμα
IsError( 1 ) Το όρισμα δεν είναι σφάλμα. ψεύτικος
IsError( Blank() ) Το όρισμα είναι κενό, αλλά όχι σφάλμα. ψεύτικος
IsError( 1/0 ) Το όρισμα είναι σφάλμα. πιστός
If( IsError( 1/0 ), Notify( "Παρουσιάστηκε ένα εσωτερικό πρόβλημα" ) ) Το όρισμα προς IsError επιστρέφει μια τιμή σφάλματος (λόγω διαίρεσης με το μηδέν). Αυτή η συνάρτηση επιστρέφει true, γεγονός που προκαλεί την εμφάνιση ενός μηνύματος If στο χρήστη με τη συνάρτηση Notify. Η τιμή επιστροφής της συνάρτησης If είναι η τιμή επιστροφής της συνάρτησης Notify, με αναγκαστική μετατροπή στον ίδιο τύπο με το πρώτο όρισμα της If (δυαδική τιμή). πιστός

Απλός IsBlankOrError

Τύπος Description Αποτέλεσμα
IsBlankOrError( 1 ) Το όρισμα δεν είναι σφάλμα ή κενό. ψεύτικος
IsBlankOrError( Blank() ) Το όρισμα είναι κενό. πιστός
IsBlankOrError( 1/0 ) Το όρισμα είναι σφάλμα. πιστός

Απλός Error

Στο παράδειγμα αυτό, οι ημερομηνίες επικυρώνονται μεταξύ τους, με αποτέλεσμα να παρουσιάζεται σφάλμα εάν υπάρχει κάποιο πρόβλημα.

If( StartDate > EndDate,
    Error( { Kind: ErrorKind.Validation, Message: "Start Date must be before End Date" } ) )

Στο παράδειγμα αυτό, ορισμένα σφάλματα επιτρέπεται να περνούν ενώ άλλα αποκρύπτονται και αντικαθίστανται με μια τιμή. Στην πρώτη περίπτωση, το b βρίσκεται σε κατάσταση σφάλματος, επειδή η συνάρτηση Value έχει ένα μη έγκυρο όρισμα. Επειδή αυτό είναι απροσδόκητο από τον συντάκτη τύπων, μεταβιβάζεται έτσι ώστε να το βλέπει ο χρήστης. Στη δεύτερη περίπτωση, με τον ίδιο τύπο, το b έχει την τιμή 0, με αποτέλεσμα μια διαίρεση με το μηδέν. Σε αυτή την περίπτωση, ο συντάκτης τύπων μπορεί να γνωρίζει ότι αυτό είναι αποδεκτό για αυτήν τη λογική, να αποκρύψει το σφάλμα (δεν εμφανίζεται διαφημιστικό πλαίσιο) και να επιστρέψει -1 αντί για αυτό.

With( {a: 1, b: Value("a")},
      IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns an error with Kind = ErrorKind.InvalidArgument

With( {a: 1, b: 0} )
      IfError( a/b, If( FirstError.Kind <> ErrorKind.Div0, Error( FirstError ), -1 ) ) )
// returns -1

Ο πίνακας AllErrors μπορεί να φιλτραριστεί όπως κάθε άλλος πίνακας. Σε χρήση με τη Error συνάρτηση, τα αναμενόμενα σφάλματα μπορούν να καταργηθούν και τα υπόλοιπα σφάλματα να διατηρηθούν και αναφέραμε. Για παράδειγμα, εάν γνωρίζαμε ότι η διαίρεση με το μηδέν δεν θα αποτελούσε πρόβλημα σε ένα συγκεκριμένο πλαίσιο, αυτά τα σφάλματα θα μπορούσαν να φιλτραριστούν, αφήνοντας όλα τα άλλα σφάλματα ανέπαφα με τον ακόλουθο τύπο:

Error( Filter( AllErrors, Kind <> ErrorKind.Div0 ) )

Βήμα προς βήμα

  1. Προσθέστε ένα στοιχείο ελέγχου Text input και ονομάστε το TextInput1, εάν δεν έχει αυτό το όνομα από προεπιλογή.

  2. Προσθέστε ένα στοιχείο ελέγχου Label και ονομάστε το Label1, εάν δεν έχει αυτό το όνομα από προεπιλογή.

  3. Ορίστε τον τύπο της ιδιότητας Text του στοιχείου ελέγχου Label1 σε:

    IfError( Value( TextInput1.Text ), -1 )
    
  4. Στο TextInput1, εισαγάγετε 1234.

    Label1 εμφανίζει την τιμή 1234 , καθώς αυτή είναι μια έγκυρη είσοδος στη συνάρτηση Value.

  5. Στο TextInput1, εισαγάγετε ToInfinity.

    Η ετικέτα 1 εμφανίζει την τιμή-1 , καθώς αυτή δεν είναι έγκυρη είσοδος στη συνάρτηση Value. Χωρίς τη περιτύλιξη της συνάρτησης Value με IfError, η ετικέτα δεν θα εμφανίσει καμία τιμή, καθώς η τιμή σφάλματος αντιμετωπίζεται ως κενή.

Δείτε επίσης

Αναφορά τύπου για Power Apps