Partilhar via


Processamento de erros

O Power Fx suporta o tratamento de erros ao nível de fórmula. Esta funcionalidade está ativada por defeito para todas as novas aplicações. No entanto, algumas aplicações mais antigas podem tê-lo desligado nas Definições da aplicação. Recomendamos manter esta funcionalidade ativada.

Para verificar se esta funcionalidade está ativada:

  1. Abre uma aplicação de canvas para editar.
  2. Aceda ao separador Definições>Atualizações>Obsoletos.
  3. Certifique-se de que a opção Desativar gestão ao nível das fórmulas está desativada.

Quando esta definição está ativada, pode usar fórmulas como IfError, IsError, Error, e IsBlankorError. Estas funções ajudam-no a detetar erros, fornecer valores alternativos ou tomar ações específicas com base no erro. Ao ativar esta opção, pode escrever valores nulos ou em branco nas fontes de dados. Quando desligas esta funcionalidade, os erros são devolvidos como valores em branco.

Processamento de erros de validação

Estas funções ajudam a validar entradas como formatos incorretos ou campos obrigatórios. Utilize instruções If ou funções como IsBlank e IsError para validar a entrada de utilizador. Forneça mensagens de erro claras e impeça processamento adicional até que a entrada seja corrigida.

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

Tratamento de erros da função de patch

Semelhante ao exemplo anterior, as funções Error ajudam a detetar erros enquanto realizam ajustes aos dados de uma origem de dados. A função Patch reporta erros de duas maneiras.

Pode devolver um valor de erro como resultado das operações.

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

Pode detetar erros usando IsError e substitui-los ou suprimi-los usando 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)
)

Processamento de erros de formulários

Quando usar Formulários para submeter dados através da SubmitForm função, utilize a propriedade do controlo do Formulário OnFailure para notificar os utilizadores sobre mensagens de erro.

// 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);

Mensagem de erro personalizada usando a propriedade OnError

A propriedade Power Apps OnError captura todos os erros não tratados na sua aplicação. Ao usar esta OnError propriedade, pode executar uma expressão sempre que a aplicação encontrar um erro não tratado. Por exemplo, pode armazenar o erro numa variável ou usar uma função, como IfError substituir o erro por outro valor. Para usar a OnError propriedade, adicione-a à aplicação onde quer tratar dos erros. Depois, escreve uma fórmula na OnError caixa de propriedades para especificar a mensagem de erro que queres mostrar.

App.OnError não consegue substituir o erro da mesma forma que IfError consegue. Quando App.OnError é executado, o erro já aconteceu e o resultado já passou por outras fórmulas. App.OnError Controla apenas como o erro é reportado ao utilizador final. Também permite ao criador registar o erro, se assim o desejar.

Este código em App.OnError pode ajudar a localizar a origem do erro:

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

Próximo passo