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
- Primeiro, a lista de mensagens de exceção específicas do banco de dados é verificada em
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:
-
Clique no botão da barra de ferramentas Configurar no painel Tipo de 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 oVinyl.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:
- Uma mensagem de erro para um tipo de banco de dados específico (por exemplo,
Microsoft SQL Server
) - 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:
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çãoRegex
: 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.