Reasignación de Mensajes de Error¶
Descripción General¶
Como novedad en Vinyl 2.6, Vinyl permite a los desarrolladores proporcionar mensajes de reemplazo comunes y fáciles de usar para errores de excepción de la base de datos. Proporcionar mensajes amigables puede ayudar a los usuarios que no están familiarizados con la tecnología de bases de datos a comprender qué sucede cuando ocurre un error. Reemplazo de mensajes de error como Violation of PRIMARY KEY constraint 'PK_ProductInt'
con algo más comprensible como Record already exists
puede contribuir en gran medida a mejorar la experiencia del usuario.
Para reasignar un mensaje de error, primero se deben realizar varios pasos para identificar la excepción:
-
El tipo de base de datos se determina haciendo coincidir las propiedades de la excepción:
-
Nombre del tipo: este es el nombre completo de la clase de excepción
-
Fuente: Este es el paquete ensamblador para la DLL
-
Se intenta hacer coincidir un mensaje de error de la base de datos utilizando expresiones regulares para el mensaje de excepción y los parámetros de datos.
- Primero, se escanea la lista de mensajes de excepción específicos de la base de datos en
Index
orden - Si no se encuentra ninguna coincidencia, la lista de entradas de mensajes de excepción generales se escanea en
Index
orden
- Primero, se escanea la lista de mensajes de excepción específicos de la base de datos en
En el caso de que no se encuentre ninguna coincidencia, el mensaje de excepción no se modificará.
Mapeo de Tipos de Bases de Datos¶
El mapeo de tipos de bases de datos permite al desarrollador asignar clases de excepción a tipos de bases de datos específicos. De esta manera, se puede examinar un conjunto más pequeño de mensajes de excepción al intentar reasignar un mensaje de excepción.
De forma predeterminada, Vinyl se entrega con muchos de los tipos de bases de datos típicos ya precargados. En el caso improbable de que se requiera una nueva entrada, un desarrollador puede realizar los siguientes pasos para agregar una nueva asignación de base de datos:
-
Navegue hasta Vinyl IDE > Configuración > Mensajes de error:
-
Haga clic en el botón Configurar de la barra de herramientas en el panel Tipo de base de datos:
-
Haga clic en Crear
-
Elija su Tipo de base de datos y complete los siguientes detalles:
-
Nombre de tipo: el nombre completo de la clase de excepción (p. ej.
System.Data.SqlClient.SqlException
) - Fuente: campo opcional para proporcionar el nombre del ensamblado de la DLL. Este campo es útil si se reasigna un tipo de excepción del sistema para un ensamblaje específico. Por ejemplo, el tipo de base de datos Rest reasigna el tipo de sistema
System.InvalidOperationException
Para elVinyl.DataSource.Rest
Sólo montaje. -
Descripción: campo opcional para proporcionar una descripción de la entrada
-
Haga clic en el icono de marca de verificación para guardar la entrada.
Ahora los mensajes de error de excepciones se pueden asignar al tipo de base de datos configurado.
Error de Mensajes¶
Para reasignar correctamente un mensaje de error, se debe realizar una entrada inteligente y fácil de usar en la tabla de mensajes de error. Las entradas se pueden agregar a una de dos listas:
- Un mensaje de error para un tipo de base de datos específico (p. ej.
Microsoft SQL Server
) - Un mensaje de error para cualquier tipo de base de datos.
Cuando se encuentra una excepción en la base de datos, primero se examina la lista de mensajes de error para el tipo de base de datos asignada. Si no se encuentra ninguna coincidencia, se examina la lista de mensajes de tipo de base de datos no específicos (mensajes de error con un tipo de base de datos NULL). Cada lista está ordenada por Index
.
Para ingresar un nuevo mensaje de error:
- Vaya a Vinyl IDE > Configuración > Mensajes de error
-
Haga clic en Crear en el panel Errores e ingrese los detalles:
Parámetros de Mensajes de Error¶
La lista de parámetros para un mensaje de error es la siguiente:
Mensaje¶
El mensaje de reemplazo que se mostrará al usuario. Este mensaje puede incluir parámetros de sustitución en forma de grupos de captura de expresiones regulares con nombre (del mensaje de excepción Pattern
) o nombres de parámetros de datos de excepción usando el Vinyl {{nombre}}
sintaxis.
Patrón¶
Este es el patrón de expresión regular utilizado para hacer coincidir el mensaje de excepción. Este patrón puede especificar grupos de captura con nombre, p. Capture group 'Key' inside quotation marks "(?<Key>.*)"
.
Nota
El patrón utiliza coincidencia de expresiones regulares de una sola línea. Actualmente no se admiten coincidencias de varias líneas.
Patrón de ejemplo:
Parámetro | Valor |
---|---|
Ejemplo | Violation of PRIMARY KEY constraint 'PK_OrderDetails'. |
Patrón | ^Violation of PRIMARY KEY constraint '(?<Key>.*)'. |
Mensaje | Row already exists for key '{{Clave}}'. |
Salidas Row already exists for key 'PK_OrderDetails'.
La coincidencia comienza al principio de la cadena. Incluye un grupo de captura llamado Key
que coincide PK_OrderDetails
dentro de las comillas simples.
Ejemplo¶
Este es un mensaje de excepción de ejemplo que coincidirá con el dado Pattern
. Si se ingresa un ejemplo, se validará la expresión regular del patrón.
Índice¶
El índice permite ordenar los mensajes de error. Tenga en cuenta que Index
no es una clave única. Varios mensajes de error pueden compartir lo mismo Index
ya que la mayoría de los partidos realmente no se pueden ordenar. Por defecto el Index
está establecido en 100 y, en la mayoría de los casos, tiene sentido dejarlo como está. Sin embargo, algunas coincidencias obviamente se pueden mover al principio o al final de la lista de procesamiento. Por ejemplo, si el desarrollador desea crear un patrón general que coincida con cualquier cadena (de modo que el mensaje de excepción siempre se reasigne incluso si todas las coincidencias anteriores fallan), podría utilizar un valor muy alto. Index
valor (por ejemplo, 9999).
Datos de Excepción¶
El Data
También se puede hacer coincidir el diccionario de parámetros para una excepción. Esto es útil cuando una excepción contiene un mensaje genérico pero tiene detalles de excepción específicos en el Data
diccionario. Hay tres Data
entradas que se pueden agregar a un mensaje de error. Deberá hacer doble clic en el mensaje de error para ver la lista completa de parámetros de datos de excepción.
Name
: El nombre del parámetro de datos de excepción.Regex
: La expresión regular que se comparará con el valor del parámetro de datos de excepción.
Sustituciones¶
Como se discutió anteriormente, el fácil de usar Message
puede incluir sustituciones que resuelvan:
- Un grupo de captura con nombre en el
Pattern
o - Un nombre de parámetro de datos de excepción.
La sintaxis de las sustituciones es {{nombre}}
y se puede utilizar en cualquier lugar dentro del Message
.
Enviar Mensajes de Usuario¶
Las asignaciones de tipos de bases de datos de usuarios y los mensajes de error se empaquetan con los LP creados en la instancia de Vinyl. Cuando se instala un LP en otra instancia de Vinyl, esas entradas de usuario también se instalarán. Esto sigue el mismo patrón que las funciones mvSQL definidas por el usuario. Las nuevas entradas se activan inmediatamente después de la instalación. Actualmente, no hay forma de desactivar esta funcionalidad.