![]() |
Exception - mensaje completo
hola, saludos...
estoy utilizando las excepciones, y funciona perfectamente,, (o casi :) ) , el tema es que cuando pruebo la excepción (No en el entorno de desarrollo), en la ventana de error aparece no el mensaje único de error que yo he asignado a la excepción, sino toda la información de depuración como reflejo a continuación: Código:
'datamodule.tabla.insertquery |
Mi no entender :confused::confused::confused:
Seguro que tu tienes claro el problema, pero yo no he entendido la pregunta |
excepción mensaje
gracias por contestar...
voy a intentar explicarme mejor: en un trigger before insert, tengo el siguiente código Código:
if (new.nombrebanco is null) then exception ERR_NO_TITULO; indicado en la excepción 'El titulo no puede estar vacio'. El problema es que al saltar la excepción, la ventana informativa de dicha excepción muestra toda la información relacionada aquí abajo.. 'datamodule.tabla.insertquery exception exception 3 ERR_NO_TITULO El título no puede estar vacio -> este es el único mensaje que deberia salir at trigger 'tabla_bi line 21 col 34' claro,,, tanta información :rolleyes:, despista mucho al usuario de la aplicación..., no sé si esto tendrá algo que ver con la configuración del servidor.... espero haber estado un poco más atinado con la explicación, gracias y.. saludos... |
Hola.
Yo lo que haría es capturar la excepción desde la aplicación, con algo parecido a esto:
Una vez que sepas el codigo de error que devuelve, puedes filtrar el mensaje:
Lo ideal es crear un procedimiento o funcion para gestionar todos los mensajes de error de la aplicación, por ejemplo: Para luego usarla asi:
|
Ok, ahora lo entiendo.
He buscado la forma de construir las excepciones, y parece que puedes hacer algo como: No se si te dará toda la informacion, pero esta linea "at trigger 'tabla_bi line 21 col 34'" es algo que yo no querria quitar, puesto que te indica donde esta el error. Para este caso, es obvio, y ya sabes lo que esta mal, pero en otros casos esa info es importante. Yo por costumbre lo que hago es comprobar los valores antes de hacer el post, y si no cumplen los requisitos, mensaje y para atras. No uso muchos compos dbaware, y cuando los uso no son para edicion, asi que puedo permitirme esto. defcon1 sugiere capturar los error_code, yo creo que tambien se podrian validar los datos en el evento onBeforeUpdate, y si alguno no cumple se cancela el post y se le envia un mensaje al cliente. ya nos contaras |
solucionado de otra manera
Cita:
No entiendo porque no puede ser asi... no obstante, lo he resuelto como tu bien dices, desde la parte del cliente, haciendo la prevalidación desde el evento beforepost del componente tfibdataset, pero ya comento, tiene que haber alguna manera facil de 'formatear' esos mensajes de excepción generados por el usuario. la opción de defcon1 es muy válida, aunque pienso que no se adapta muy bien a este caso, ya que simplemente queria utilizar la excepción en el servidor como un 'comprobador de campos', quizás lo hubiese podido hacer desde la definición de la columna de la base de datos con la cláusula CHECK..., gracias a todos,, un saludo... |
Puedes usar la opción de defcon1 perfectamente.... pero en lugar de usarlo en un try... except, coloca ese código del except en un ApplicationsEvents.OnException.
Así la misma rutina de gestión de excepciones la tienes centralizada en un único sitio y te vale para todos los errores de la aplicación. Si no quieres que muestre todo el mensaje cárgate el mensaje original de la excepción y pones el tuyo.... a ver si me explico con código: en el applications.OnException Application.ShowException no estoy muy seguro, creo que es la forma correcta, pero no recuerdo si pertenece a "Application" o es una rutina escondida... También puedes usar en Interbase un prefijo para todas tus excepciones, por ejemplo al definir la excepción lo haces así: Ahora en el applications.OnException buscas la cadena prefijo "Mi_excepcionIBInicio" y sólo copias el texto hasta el sufijo "Mi_excepcionIBFin" saludos |
Cita:
ok, gracias, creo que ahora si que lo tengo claro, me pongo a la faena de crear un manejador de errores,,, universal... gracias a todos... |
resp
El problema no es del manejador si no de los componentes que estes usando. Lo que hacer es sobreescribir el codigo del componente donde se lansa la exception. Y es si los componentes no dispones de las fuentes podrian crean on procedimiento onexception global ya asignarselo a al aplicacion y hay verificas si le exception es del tipo d einterbase o firebird y arreglas la caeena a tu conveniencia.
|
La franja horaria es GMT +2. Ahora son las 09:34:04. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi