Обробка помилок

Power Fx підтримує обробку помилок на рівні формули. Ця функція увімкнена за замовчуванням для всіх нових додатків. Однак у деяких старих додатках це може бути вимкнено в налаштуваннях додатку. Рекомендуємо тримати цю функцію увімкненою.

Щоб перевірити, чи ця функція увімкнена:

  1. Відкрийте додаток Canvas для редагування.
  2. Перейдіть у вкладку Налаштування>Оновлення>Відставки .
  3. Переконайтеся, що керування формулою вимкнено .

Коли це налаштування увімкнено, можна використовувати формули на кшталт IfError, IsError, Error, та IsBlankorError. Ці функції допомагають виявляти помилки, надавати альтернативні значення або виконувати конкретні дії на основі помилки. Коли ви вмикаєте це налаштування, ви можете записувати нульові або порожні значення у джерела даних. Коли ви вимикаєте цю функцію, помилки повертаються у вигляді порожніх значень.

Обробка помилок валідації

Ці функції допомагають перевіряти введені дані, як-от неправильні формати або обов'язкові поля. Використовуйте If інструкції або функції, такі як IsBlank і IsError для перевірки введених користувачем даних. Надавайте чіткі повідомлення про помилки та запобігайте подальшій обробці, доки введення не буде виправлено.

If( IsBlank(TextInput.Text),
    Notify("Field cannot be blank", 
    NotificationType.Error),
    // Continue with processing
)

Обробка помилок функції патч

Подібно до попереднього прикладу, Error функції допомагають виявляти помилки під час виправлення даних у джерело даних. Функція Patch повідомляє про помилки двома способами.

Він може повертати значення помилки в результаті операцій.

UpdateContext(
    {   
    result : Patch(
             Feeds,
             Defaults(Feeds),
             {
                 createdon: Now(),
                 crde8_content: TextInput1_1.Text
                 cr9ce_imageurl: filename
             }
        )
    }
)

Ви можете виявити помилки, використовуючи IsError і замінюючи їх, або пригнічуючи їх за IfErrorдопомогою .

IfError(result, Notify("There was an issue saving data" , NotificationType.Error));
IfError(result, Notify("There was an issue saving data" , & FirstError.Message, NotificationType.Error))

If(
    IsError(
        Patch(
            Feeds,
            Defaults(Feeds),
            {
                createdon: Now(),
                crde8_content: TextInput1_1.Txt,
                cr9ce_imageurl: filename        
            }
        )
    ),
    Notify("Error: There was an issue saving data", NotificationType.Error)
)

Обробка помилок у формах

Коли ви використовуєте Forms для подачі даних за допомогою цієї SubmitForm функції, використовуйте властивість OnFailure контролю Form, щоб повідомити користувачів про повідомлення про помилки.

// OnSelect property of the form's submit button
SubmitForm(frm_SubmitData);

// OnSuccess property of the form
Navigate('Success Screen');

// OnFailure property of the form
Notify("Error: the invoice could not be created", NotificationType.Error);

Власне повідомлення про помилку за допомогою властивості OnError

Властивість Power Apps OnError фіксує всі невирішені помилки у вашому додатку. Використовуючи цю OnError властивість, ви можете запускати вираз щоразу, коли додаток стикається з необробленою помилкою. Наприклад, ви можете зберегти помилку у змінній або використати функцію, наприклад IfError , для заміни помилки на інше значення. Щоб використати цюOnError властивість, додайте її до додатку, де потрібно обробляти помилки. Потім запишіть формулу у OnError полі властивості, щоб вказати повідомлення про помилку, яке ви хочете показати.

App.OnError Не можу замінити цю помилку, як IfError можна. Під час App.OnError запуску помилка вже сталася, і результат пройшов через інші формули. App.OnError Він лише контролює, як помилка повідомляється кінцевому користувачу. Це також дає можливість для виробника записати помилку, якщо він цього хоче.

Цей код на App.OnError може допомогти знайти джерело помилки:

Notify(
    Concatenate(
        FirstError.Message,
        ", Observed: ",
        FirstError.Observed,
        ", Source: ",
        FirstError.Source
    ),
    NotificationType.Error
)

Наступний крок