Ir para o conteúdo

Remapeamento de Mensagem de Erro

Visão Geral

Novidade no Vinyl 2.6, o Vinyl permite aos desenvolvedores fornecer mensagens de substituição comuns e fáceis de usar 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 ocorreu um erro. Substituindo mensagens de erro como Violation of PRIMARY KEY constraint 'PK_ProductInt' com algo mais compreensível, como Record already exists pode ajudar muito a 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 assembly da DLL

  • É tentada uma correspondência de mensagem de erro de banco de dados 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 é verificada em Index ordem
    • Se nenhuma correspondência for encontrada, a lista de entradas de mensagens de exceção gerais será verificada em Index ordem

Caso nenhuma correspondência seja encontrada, a mensagem de exceção permanecerá intacta.

Mapeamento de Tipo de Banco de Dados

O mapeamento de tipo de banco de dados permite ao desenvolvedor mapear 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, o Vinyl vem com muitos dos tipos de banco de dados típicos já pré-preenchidos. No caso 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é Vinyl 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:

    Configuração do banco de dados

  • Clique em Criar

  • Escolha seu Tipo de banco de dados e preencha os seguintes detalhes:

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

  • Fonte: campo opcional para fornecer o nome do assembly DLL. Este campo será ú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 de 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 as mensagens de erro de exceções podem ser mapeadas para o tipo de banco de dados configurado.

Mensagens de Erro

Para remapear com êxito uma mensagem de erro, uma entrada inteligente e fácil de usar deve ser feita na tabela de mensagens de erro. 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 do 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 tipo de banco de dados NULL) será examinada. Cada lista é ordenada por Index.

Para inserir uma nova mensagem de erro:

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

    Dberror

Parâmetros da 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 método Vinyl {{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ões regulares de linha única. As correspondências multilinhas 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 '{{Key}}'.

Resultados Row already exists for key 'PK_OrderDetails'.

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

Exemplo

Este é um exemplo de mensagem de exceção que corresponderá ao dado Pattern. Se for inserido um exemplo, a expressão regular 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 já que a maioria das partidas não pode ser realmente encomendada. Por padrão o Index está definido como 100 e, na maioria dos casos, faz sentido deixá-lo como está. No entanto, algumas correspondências podem obviamente ser movidas para o início ou para o fim da lista de processamento. Por exemplo, se o desenvolvedor quiser criar um padrão pega-tudo que corresponda a qualquer string (para que a mensagem de exceção seja sempre remapeada mesmo se todas as correspondências anteriores falharem), ele poderá 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. Isto é útil quando uma exceção contém uma mensagem genérica, mas possui detalhes específicos da exceção no Data dicionário. Há 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

Como discutido anteriormente, a facilidade de uso 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 na instância do Vinyl. Quando um LP é instalado em outra instância do Vinyl, 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 tornam-se ativas imediatamente após a instalação. Atualmente, não há como desabilitar esta funcionalidade.