|
Página 1 de 1
|
Autor |
Mensaje |
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Usar O No Try?
buenas, no quiero que ningún tanteador se cuelgue o de error al hacer tareas de red y esto lo puedo hacer por medio de Try, esto me conviene o no? osea poner a todas las operación de red de escritura y lectura un Try delante.
la cuestión es o mi temor es, supongamos que se esta jugando un grupo y se va por la mitad del partido y por una razón x hay un error en las operaciones de red y el tanteador da error y el programa se cierra o se cuelga y se pierden los datos del mismo, por eso mi consulta.
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#1 Lunes, 16 Marzo 2015, 11:48 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Usar O No Try?
V3ctor:
Citar: ....y esto lo puedo hacer por medio de Try,
Lo que debes hacer es capturar ese error, analizarlo y tratarlo.
En el caso de que sea un error momentaneo, tipo "fallo de las operaciones de red" , pues lo que haces es saltarlo.
Pero si ocultas los errores, puede que nunca sepas porque no funciona tu programa, y lo que es peor, puedes pensar que funciona correctamente, cuando no lo hace.
¿como tratar un error?
Despues de un try, por un if error then .... y mirar las propiedades del error, y según el error, hacer una cosa u otra (mensajes de error en pantalla hacer que lo vuelva a intentar)
Por ejemplo:
Imagina que tienes una función que se encarga de hacer copias de seguridad de tus datos.
Esta funcion devuelve TRUE si todo ha ido bien, o FALSE se falla al hacer la copia de seguridad.
Lo primero que hace el programa es borrar la antigua copia de seguridad, que es un archivo de nombre "archivo.bak", y siempre la tienes que borrar para que solo se añadan los datos actuales.
Con esta orden, gambas borra un archivo... ¿que pasa si no existe el archivo? gambas genera un error y sale del programa (lo que tu no quieres)
Que pasa si pongo:
Lo intenta borrar, y si hay fallo sigue ejecutando el programa.... pero se te puede presentar un problema mayor, imagina que realmente no se ha borrado y añades información al archivo.... resultas que tienes el antiguo archivo con datos antiguos más los datos nuevos... y tu crees que solo tienes los datos ultimos añadidos....tienes otro problema mayor (no esperas tener un archivo con tantos datos) y encima no sabes por qué pasa eso y tu copia de seguridad no esta bien hecha.
¿cual es la forma de hacerlo?
try kill archivo
if error then
'aqui trato el error, veo que numero es, y averiguo una forma de solucionarlo, o salir de la subrutina.
'puedo presentar un mensaje en pantalla
'y retorno diciendo que la operación a fallado.
return False 'retorno un boolean FALSE para indicar que la operacion ha fallado, el programa puede intentar hacer otra vez la copia de seguridad o lo que se estimes oportuno.
endif
De esta forma estamos "tratando" el error y dandole una solución si se produce.
Esto mismo lo hablamos hace mucho tiempo, he hice un articulo en el curso de gambas:
http://cursogambas.blogspot.com.es/...uso-de-try.html
Leetelo, porque alli comento más cosas.
Saludos
|
#2 Lunes, 16 Marzo 2015, 13:56 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Usar O No Try?
Lo primero que hace el programa es borrar la antigua copia de seguridad, que es un archivo de nombre "archivo.bak",
Aunque me salgo un poco del tema, no me parece buena estrategia la que comentas en el ejemplo
Si primero borras la copia de seguridad y luego falla la creación de la nueva, te quedas sin respaldo. Hay otras formas de excluir de la copia la propia copia de seguridad mucho más seguras, te lo digo por experiencia.
Volviendo al tema de la gestión de los errores, coincido con jsbsan. De todos modos, es bueno leer algo de información al respecto en la ayuda oficial: http://gambaswiki.org/wiki/cat/error?l=es
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#3 Martes, 17 Marzo 2015, 22:45 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Usar O No Try?
jguardon:
Citar:
no me parece buena estrategia la que comentas en el ejemplo
Si primero borras la copia de seguridad y luego falla la creación de la nueva, te quedas sin respaldo.
Estoy deacuerdo contigo, no es buena estrategia. Pero es un ejemplo para que V3ctor entendiera que problemas tiene poner Try a "diestro y siniestro".
Como no ha contestado , supongo que ya lo ha entendido.
|
#4 Miercoles, 18 Marzo 2015, 11:09 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Usar O No Try?
Como no ha contestado , supongo que ya lo ha entendido.
si entiendo que hay que tratar los errores,bien lo hago, pero.... hay errores que desconocemos o errores impredecibles y con try me aseguro que jamas el programa se colgaría por un error de red con lo cual se cerraría el tanteador o quedaría colgado y se perdería la información del tanteador en ese momento y seria un rato muy desagradable para el arbitro y los jugadores, también para el organizador.
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#5 Viernes, 20 Marzo 2015, 04:12 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Usar O No Try?
V3ctor:
Citar: y se perdería la información del tanteador en ese momento y seria un rato muy desagradable para el arbitro y los jugadores, también para el organizador.
A lo mejor deberías de crear un sistema que cada vez que se produzca un tanto o ocurra algo en el partido, quede registrado en un archivo de texto plano, el cual se podia recuperar si hay un fallo "total" de la aplicacion.
Hay otra cosa que te puede interesar, es el componente gb.logging, que hizo Sebikul, y que Jguardon lo explicó en este hilo:
http://foro.gambas-es.org/viewtopic.php?f=4&t=3495&highlight=log
( ufff. otra caso para añadir al curso de gambas )
|
#6 Viernes, 20 Marzo 2015, 12:25 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Usar O No Try?
A lo mejor deberías de crear un sistema que cada vez que se produzca un tanto o ocurra algo en el partido, quede registrado en un archivo de texto plano, el cual se podia recuperar si hay un fallo "total" de la aplicacion.
si es buena la idea, seria cuestión de hacer un archivo de registro de los tantos y y datos de momento si el partido termina y se guarda correctamente este archivo temporal se borraría y empezara un nuevo registro, y si el programa da fallo el archivo quedaría permanente en una carpeta,
supongo que en ese caso el archivo debería estar abierto permanente al comenzar el partido y solo cerrarse cuando el partido termino sin errores y se guardo en su respectivo txt.
ahí el comando usando Append seria el protagonista jaja
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#7 Viernes, 20 Marzo 2015, 17:14 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|