שתף באמצעות


Error, IfError, IsErrorפונקציות IsBlankOrError

Functions חל על
Error
IfError
IsError
אפליקציות Canvas Studio Copilot Studio זורמות עמודות נוסחאות Dataverse אפליקציות מונחות דגמים Power Platform CLI Dataverse פונקציות Power Pages
IsBlankOrError אפליקציות Canvas Copilot Studio Desktop זורמות אפליקציות מונחות דגמים פונקציות Power Platform CLI Dataverse Power Pages

מזהה שגיאות ומספקת ערך חלופי או נוקטת פעולה. צור שגיאה מותאמת אישית או העבר שגיאה.

הערה

אם אפליקציה השביתה את התכונה ניהול שגיאות ברמת הנוסחה ב הגדרות>עדכונים> פרש, פונקציות אלו לא יפעלו כהלכה.

IfError

הפונקציה IfError בודקת ערכים עד שהיא מוצאת שגיאה. אם הפונקציה מגלה שגיאה, הפונקציה מעריכה ומחזירה ערך חלופי מתאים ומפסיקה הערכה נוספת. ניתן לספק ערך ברירת מחדל גם כאשר לא נמצאו שגיאות. המבנה של דומה IfError לזה של הפונקציה If : IfError בודק אם קיימים שגיאות, ואילו אם תבדוק אם קיימים שגיאות 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 להיות תואמים.

בדוגמה האחרונה, תיקון מחזיר רשומה שאינה תואמת את הבוליאנים המשמשים לנוסחאות החלפה או תוצאת ברירת המחדל. וזה בסדר, מאחר שאין מצב שבו הערך המוחזר מקריאות תיקון אלה יוחזר על-ידי .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 יכול להחזיר שגיאה אם השגיאה Replacement או 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 ) )

הנוסחה לדוגמה לעיל תציג את הכרזה הבאה כאשר שני הלחצנים יופעלו ברצף:

פקד לחצן מופעל, ומציג הודעה מהפונקציה Notify.

בדרך כלל, תהיה רק ​​שגיאה אחת ש FirstError יכול לעבוד איתה מספיק. עם זאת, ישנם תרחישים שעלולים להחזיר שגיאות מרובות. לדוגמה, בעת שימוש באופרטור שרשור הנוסחאות או בפונקציה Concurrent. גם במצבים אלה, הדיווח על FirstError יכול להיות מספיק כדי לחשוף בעיה במקום להעמיס על המשתמש שגיאות מרובו. אם אתה עדיין נדרש לעבוד עם כל שגיאה בנפרד, תוכל להשתמש בטבלה AllErrors.

IsError

הפונקציה IsError בודקת אם קיים ערך שגיאה.

ערך ההחזרה הוא ערך true או false בוליאני.

השימוש IsError מונע עיבוד נוסף של השגיאה.

IsBlankOrError

הפונקציה IsBlankOrError בודקת אם קיים ערך ריק או ערך שגיאה השווה ל- Or( IsBlank( X ), IsError( X ) ).

בעת הפעלת טיפול בשגיאות עבור יישומים קיימים, שקול להחליף את IsBlank ב כדיIsBlankOrError לשמר את אופן הפעולה הקיים של היישום. לפני הוספת הטיפול בשגיאות, נעשה שימוש ב blank ערך כדי לייצג ערכי null ממסדי נתונים וגם ערכי שגיאה. Error טיפול מפריד בין שני פרשנות ריקים אלה , דבר שעשוי לשנות את אופן הפעולה של אפליקציות קיימות הממשיכות להשתמש ב- IsBlank.

ערך ההחזרה הוא ערך true או false בוליאני.

השימוש IsBlankOrError מונע עיבוד נוסף של השגיאה.

השתמש בפונקציה Error כדי ליצור ולדווח על שגיאה מותאמת אישית. לדוגמה, ייתכן שיהיה לך ביטוי לוגי כדי לקבוע אם ערך מסוים תקף עבור ההקשר שלך או לא – בדיקה שלא מתבצעת עבור בעיה באופן אוטומטי. באפשרותך ליצור ולהחזיר שגיאה משלך, עם Kind ו- Message, תוך שימוש באותה רשומה המתוארת לעיל עבור הפונקציה IfError .

בהקשר של IfError, השתמש בפונקציה Error כדי להציג מחדש שגיאה או כדי לעבור בה. לדוגמה, ייתכן שהלוגיקה IfError שלך ב- תחליט שבמקרים מסוימים ניתן להתעלם משגיאה בבטחה, אך במקרים אחרים חשוב לשלוח את השגיאה. בתוך IfError או ב- App.OnError, השתמש Errorב- ( FirstError ) כדי לעבור דרך שגיאה.

ניתן Error גם להעביר את הפונקציה לטבלת שגיאות, כפי שניתן למצוא בטבלה AllErrors . Use Error( AllErrors ) כדי להפעיל מחדש את כל השגיאות ולא רק את הראשונה.

רשומה ריקה או טבלה ריקה שהועברו לתוצאות Error ללא שגיאה.

תחביר

Error( ErrorRecord )
Error( ErrorTable )

  • ErrorRecord – נדרש. Error רשומת מידע, כולל סוג, הודעה ושדות אחרים. נדרש סוג . FirstError ניתן להעביר ישירות.
  • ErrorTable – נדרש. טבלה של רשומות פרטי שגיאות. ניתן להעביר את AllErrors ישירות.

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

  • ערכים – חובה. נוסחאות לבדיקת ערך שגיאה.
  • תחליפים - נדרשים. הנוסחאות להערכה וערכים להחזרה אם ארגומנטים תואמים מסוג Value החזירו שגיאה.
  • DefaultResult – אופציונלי. הנוסחאות להערכה אם הנוסחה אינה מוצאת שגיאות.

IsError( ערך )
IsBlankOrError( ערך )

  • ערך – חובה. נוסחה לבדיקה.

דוגמאות

פשוט IfError

נוסחה Description תוצאה
IfError( 1, 2 ) הארגומנט הראשון אינו שגיאה. לפונקציה אין שגיאות אחרות לבדוק ואין ערך החזרה של ברירת מחדל. הפונקציה מחזירה את ארגומנט Value האחרון שהוערך. 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( "There was an internal problem" ) הארגומנט הראשון מחזיר ערך שגיאה (בשל חלוקה באפס). הפונקציה מעריכה את הארגומנט השני ומציגה הודעה למשתמש. ערך ההחזרה IfError של הוא ערך ההחזרה של Notify, כפייה לאותו סוג של הארגומנט הראשון ל- IfError (מספר). 1

פשוט IsError

נוסחה Description תוצאה
IsError( 1 ) הארגומנט אינו שגיאה. שֶׁקֶר
IsError( ריק() ) הארגומנט ריק, אך אינו שגיאה. שֶׁקֶר
IsError( 1/0 ) הארגומנט הוא שגיאה. נָכוֹן
If( IsError( 1/0 ), Notify( "There was an internal problem" ) הארגומנט שמחזיר IsError ערך שגיאה (עקב חילוק באפס). הפונקציה חוזרת בתור true, שגורם ל- If להציג הודעה למשתמש עם הפונקציה Notify. ערך ההחזרה של If הוא ערך ההחזרה של Notify, שאולץ לאותו סוג כשל הארגומנט הראשון ל- If (בוליאני). נָכוֹן

פשוט IsBlankOrError

נוסחה Description תוצאה
IsBlankOrError( 1 ) הארגומנט אינו שגיאה או ריק. שֶׁקֶר
IsBlankOrError( ריק() ) הארגומנט ריק. נָכוֹן
IsBlankOrError( 1/0 ) הארגומנט הוא שגיאה. נָכוֹן

פשוט Error

בדוגמה זו, התאריכים מאומתים יחסית זה לזה, ויוצרים שגיאה אם יש בעיה.

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

בדוגמה זו, ניתן להעביר חלק מהשגיאות בעוד ששגיאות אחרות מושמטות ומוחלפות בערך. במקרה הראשון, ב נמצא במצב שגיאה מכיוון ש- עֵרֶך לפונקציה יש ארגומנט לא חוקי. מכיוון שזה לא צפוי על ידי כותב הנוסחה, זה מועבר כך שהמשתמש יראה את זה. במקרה השני, עם אותה נוסחה, ב יש את הערך 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.

    תווית1 מציגה את הערך 1234 מכיוון שזהו קלט חוקי לפונקציה Value.

  5. ב- TextInput1, הזן ToInfinity.

    תווית1 מציגה את הערך -1 מכיוון שזו אינה קלט חוקי לפונקציה Value. ללא גלישה של הפונקציה Value ב IfError- , התווית לא תציג ערך, כי ערך השגיאה נחשב לריק.

למידע נוסף

התייחסות לנוסחה עבור Power Apps