Página 1 de 1

ErrorHandler

Publicado: Jue Ago 07, 2008 12:54 am
por RRamonell
Hola todos:
He encontrado que el método TMySQLDataSource:IsError() no funciona
cuando ocurre un error como por ejemplo, en el intento de creación de
una tabla que ya existe o en el intento de eliminación de una tabla que
no existe o en el intento de crear un query de una tabla que no existe,
y de que tampoco funciona TRY/CATCH en la parte donde CATCH atrapa al
objeto error "e", pues si se ve a través del debugger que "e" es un
objeto error, pero esta vacio o no se puede "abrir" para inspeccionar
sobre su uso, y por lo tanto no lo puedo usar en esa estructura, ya que
no funciona.
Ya estoy usando TRY/CATCH con nLastError y cLastError para atrapar
errores de MySQL e informar al usuario de ellos (que por cierto en
algunos casos nLastError contiene cero y cLastError nada), pero me
gustarí­a ofrecer más información al usuario sobre esto, ya que en mi
experiencia propia esta información (cuando ocurre un error en el
run-time de un sistema complejo) a quien más ayuda es a quien da
mantenimiento al sistema o sea Yo, por lo cual pensé en construir mi
propio errorhandler para insertarlo en mis proyectos Xailer.
Al insertar mi errorhandler en un proyecto descubro que aquí­ tampoco
tiene funcionalidad el objeto error "e", pues tampoco logro la
manipulación de sus propiedades (recordando las que habí­a disponibles en
Clipper) pues se manifiesta como si todas ellas estuviesen sin valor
aunque si las reconoce Xailer y tampoco se puede "abrir" con el debugger
aquí­.
Les suplico su ayuda, pues como menciona Ignacio OZ en una de sus
interesantes notas: "cuando se empiezan a manejar otros tipos de bases
de datos como puede ser cualquier base de datos SQL…….es imposible
conocer a priori si la operación va a tener éxito."
Alguien me puede decir como puedo manipular al objeto error e ?
Gracias por su ayuda.
Rene Ramón Elly.

ErrorHandler

Publicado: Jue Ago 07, 2008 9:57 am
por jfgimenez
René,
> He encontrado que el método TMySQLDataSource:IsError() no funciona cuando
> ocurre un error como por ejemplo, en el intento de creación de una tabla
> que ya existe o en el intento de eliminación de una tabla que no existe o
> en el intento de crear un query de una tabla que no existe, y de que
> tampoco funciona TRY/CATCH en la parte donde CATCH atrapa al objeto error
> "e", pues si se ve a través del debugger que "e" es un objeto error, pero
> esta vacio o no se puede "abrir" para inspeccionar sobre su uso, y por lo
> tanto no lo puedo usar en esa estructura, ya que no funciona.
El problema no es que "e" no sea un objeto error, sino que el debugger sólo
permite inspeccionar objetos que deriven de la clase base de Xailer
TComponent, y TError es una clase de xHarbour que no deriva de TComponent.
> Ya estoy usando TRY/CATCH con nLastError y cLastError para atrapar errores
> de MySQL e informar al usuario de ellos (que por cierto en algunos casos
> nLastError contiene cero y cLastError nada), pero me gustaría ofrecer más
> información al usuario sobre esto, ya que en mi experiencia propia esta
> información (cuando ocurre un error en el run-time de un sistema complejo)
> a quien más ayuda es a quien da mantenimiento al sistema o sea Yo, por lo
> cual pensé en construir mi propio errorhandler para insertarlo en mis
> proyectos Xailer.
>
> Al insertar mi errorhandler en un proyecto descubro que aquí tampoco tiene
> funcionalidad el objeto error "e", pues tampoco logro la manipulación de
> sus propiedades (recordando las que había disponibles en Clipper) pues se
> manifiesta como si todas ellas estuviesen sin valor aunque si las reconoce
> Xailer y tampoco se puede "abrir" con el debugger aquí.
>
> Les suplico su ayuda, pues como menciona Ignacio OZ en una de sus
> interesantes notas: "cuando se empiezan a manejar otros tipos de bases de
> datos como puede ser cualquier base de datos SQL…….es imposible conocer a
> priori si la operación va a tener éxito."
>
> Alguien me puede decir como puedo manipular al objeto error e ?
Puedes utilizar el objeto error sin problemas, lo único que no puedes hacer
es inspeccionarlo con el debugger.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info