Ir para o conteúdo

Remapeamento de Mensagem de Erro

Visão Geral

App Builder permite que os desenvolvedores forneçam mensagens de substituição comuns e amigáveis para erros de exceção de banco de dados. Fornecer mensagens amigáveis pode ajudar usuários não familiarizados com a tecnologia de banco de dados a entender o que aconteceu quando um erro ocorreu. Substituir mensagens de erro como Violation of PRIMARY KEY constraint 'PK_ProductInt'com algo mais compreensível como Record already existspode percorrer um longo caminho para melhorar a experiência do usuário.

Para remapear uma mensagem de erro, várias etapas devem ser executadas primeiro para identificar a exceção:

  • O tipo de banco de dados é determinado pela correspondência das propriedades da exceção:

  • Nome do tipo: Este é o nome completo da classe de exceção

  • Fonte: Este é o pacote de montagem para a DLL

  • Uma correspondência de mensagem de erro do banco de dados é tentada usando expressões regulares para a mensagem de exceção e parâmetros de dados.

    • Primeiro, a lista de mensagens de exceção específicas do banco de dados é escaneada em Index ordem
    • Se nenhuma correspondência for encontrada, a lista de entradas de mensagens de exceção geral será escaneada em Index ordem

No caso em que nenhuma correspondência for encontrada, a mensagem de exceção será deixada inalterada.

Mapeamento de Tipo de Banco de Dados

O mapeamento de tipo de banco de dados permite que o desenvolvedor mapeie classes de exceção para tipos de banco de dados específicos. Dessa forma, um conjunto menor de mensagens de exceção pode ser examinado ao tentar remapear uma mensagem de exceção.

Por padrão, App Builder vem com muitos dos tipos de banco de dados típicos já pré-preenchidos. No evento improvável de que uma nova entrada seja necessária, um desenvolvedor pode executar as seguintes etapas para adicionar um novo mapeamento de banco de dados:

  • Navegue até o App Builder IDE > Configuração > Mensagens de erro:

    Mensagens de erro

  • Clique no botão da barra de ferramentas Configurar no painel Tipo de banco de dados:

    Dbconfiguration

  • Clique em Criar

  • Selecione seu Tipo de Banco de Dados e preencha os seguintes detalhes:

  • Nome do Tipo: O nome totalmente qualificado da classe de exceção (por exemplo, System.Data.SqlClient.SqlException)

  • Source: Campo opcional para fornecer o nome do assembly DLL. Este campo é útil se um tipo de exceção do sistema estiver sendo remapeado para um assembly específico. Por exemplo, o tipo de banco de dados Rest remapeia o tipo do sistema System.InvalidOperationException para o Vinyl.DataSource.Rest somente montagem.
  • Descrição: Campo opcional para fornecer uma descrição para a entrada

  • Clique no ícone de marca de seleção para salvar a entrada

Agora, mensagens de erro de exceções podem ser mapeadas para o tipo de banco de dados configurado.

Mensagens de Erro

Para remapear com sucesso uma mensagem de erro, uma entrada inteligente e amigável deve ser feita na tabela Error Message. As entradas podem ser adicionadas a uma de duas listas:

  1. Uma mensagem de erro para um tipo de banco de dados específico (por exemplo, Microsoft SQL Server)
  2. Uma mensagem de erro para qualquer tipo de banco de dados

Quando uma exceção de banco de dados é encontrada, a lista de mensagens de erro para o tipo de banco de dados mapeado é examinada primeiro. Se nenhuma correspondência for encontrada, a lista de mensagens de tipo de banco de dados não específico (mensagens de erro com um tipo de banco de dados NULL) é examinada. Cada lista é ordenada por Index.

Para inserir uma nova mensagem de erro:

  • Navegue até App Builder IDE > Configuração > Mensagens de erro
  • Clique em Criar no painel Erros e insira os detalhes:

    Dberror

Parâmetros de Mensagem de Erro

A lista de parâmetros para uma mensagem de erro é a seguinte:

Mensagem

A mensagem de substituição a ser exibida ao usuário. Esta mensagem pode incluir parâmetros de substituição na forma de grupos de captura de regex nomeados (da mensagem de exceção Pattern) ou nomes de parâmetros de dados de exceção usando o {{nm.ab}} {{nome}}sintaxe.

Padrão

Este é o padrão de expressão regular usado para corresponder à mensagem de exceção. Este padrão pode especificar grupos de captura nomeados, por exemplo. Capture group 'Key' inside quotation marks "(?<Key>.*)".

Nota

O padrão usa correspondência de expressão regular de linha única. Correspondências de várias linhas não são suportadas atualmente.

Padrão de exemplo:

Parâmetro Valor
Exemplo Violation of PRIMARY KEY constraint 'PK_OrderDetails'.
Padrão ^Violation of PRIMARY KEY constraint '(?<Key>.*)'.
Mensagem Row already exists for key '{{Chave}}'.

Saídas Row already exists for key 'PK_OrderDetails'.

A correspondência começa no início da string. Inclui um grupo de captura chamado Key que combina PK_OrderDetails dentro das aspas simples.

Exemplo

Este é um exemplo de mensagem de exceção que corresponderá ao dado Pattern. Se um exemplo for inserido, a expressão regular do padrão será validada.

Índice

O índice permite a classificação de mensagens de erro. Observe que Index não é uma chave única. Várias mensagens de erro podem compartilhar a mesma Index como a maioria das correspondências não podem ser realmente ordenadas. Por padrão, o Index é definido como 100 e, na maioria dos casos, faz sentido deixá-lo como está. No entanto, algumas correspondências podem ser obviamente movidas para a frente ou para o fim da lista de processamento. Por exemplo, se o desenvolvedor quiser criar um padrão catch-all que corresponda a qualquer string (para que a mensagem de exceção seja sempre remapeada, mesmo se todas as correspondências anteriores falharem), ele pode usar um valor muito alto Index valor (por exemplo, 9999).

Dados de Exceção

O Data dicionário de parâmetros para uma exceção também pode ser correspondido. Isso é útil quando uma exceção contém uma mensagem genérica, mas tem detalhes de exceção específicos no Data dicionário. Existem três Data entradas que podem ser adicionadas a uma mensagem de erro. Você precisará clicar duas vezes na mensagem de erro para ver a lista completa de parâmetros de dados de exceção.

  • Name: O nome do parâmetro de dados de exceção
  • Regex: A expressão regular para corresponder ao valor do parâmetro de dados de exceção

Substituições

Conforme discutido anteriormente, o fácil de usar Message pode incluir substituições que resolvem para:

  • Um grupo de captura nomeado no Pattern ou
  • Um nome de parâmetro de dados de exceção

A sintaxe das substituições é {{nome}} e pode ser usado em qualquer lugar dentro do Message.

Envio de Mensagens do Usuário

Os mapeamentos de tipo de banco de dados do usuário e as mensagens de erro são empacotados com LPs criados no App Builder instância. Quando um LP é instalado em outro App Builder por exemplo, essas entradas de usuário também serão instaladas. Isso segue o mesmo padrão das funções mvSQL definidas pelo usuário. As novas entradas se tornam ativas imediatamente após a instalação. Atualmente, não há como desabilitar essa funcionalidade.