Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Control De Errores En Una Aplicación De Consola
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Control De Errores En Una Aplicación De Consola 
 
Buenos días!.

Comienzo de semana. Si el humor de los viandantes se reflejase con un emoticono sobre la cabeza, habría muchos repetidos del mismo. "Felicidad!".  

Se me presenta un problema con el control de errores de una aplicación de consola.
Que puede que sea igual que en una de formulario.

La mayoría de los lenguajes tienen un control de errores parecidos. En algunos se expande un poco.
En este caso vengo de un ejemplo en Python y quiero hacer algo parecido en Gambas.
Se trata de controlar las dimensiones de un tablero. En este tablero el número de losetas, cuadrados, escaques debe ser par.
Debe cumplirse una condición. Así por ejemplo tengo dos constantes definidas al principio:

Const TABLEROANCHO As Integer = 10
Const TABLEROALTO As Integer = 7
 


Ahora bien. Para saber si son par:  Si yo hiciera algo como esto:

If (TABLEROANCHO * TABLEROALTO) Mod 2 = 1 Then Error.Raise("Tablero necesita tener un número par de cajas para que coincidan parejas.")
 

La aplicación se para dando el consiguiente error:

Citar:

Main.Main.9: Tablero necesita tener un número par de cajas para que coincidan parejas.
Main.Main.9


El error se me mostraría dentro del editor y parece que también en la consola. Al crear el ejecutable también lo acabo de ver.
En Python existe un comando llamado Assert.

Citar:

The "assert" statement
**********************

Assert statements are a convenient way to insert debugging assertions
into a program:

   assert_stmt ::= "assert" expression ["," expression]

The simple form, "assert expression", is equivalent to

   if __debug__:
       if not expression: raise AssertionError

The extended form, "assert expression1, expression2", is equivalent to

   if __debug__:
       if not expression1: raise AssertionError(expression2)

These equivalences assume that "__debug__" and "AssertionError" refer
to the built-in variables with those names.  In the current
implementation, the built-in variable "__debug__" is "True" under
normal circumstances, "False" when optimization is requested (command
line option -O).  The current code generator emits no code for an
assert statement when optimization is requested at compile time.  Note
that it is unnecessary to include the source code for the expression
that failed in the error message; it will be displayed as part of the
stack trace.

Assignments to "__debug__" are illegal.  The value for the built-in
variable is determined when the interpreter starts.


Así es como lo tengo en el ejemplo:

assert (TABLEROANCHO * TABLEROALTO) % 2 == 0, 'Tablero necesita tener un número par de cajas para que coincidan parejas.'
 


En caso de error (dimensiones incorrectas definidas en las constantes )  mostraría:

Citar:

Traceback (most recent call last):
  File "/home/..../Programacion/Python/HaciendoJuegosConPyGame/Capitulo3_Memory_Puzzle/memoriapuzzle.py", line 13, in <module>
    assert (TABLEROANCHO * TABLEROALTO) % 2 == 0, 'Tablero necesita tener un número par de cajas para que coincidan parejas.'
AssertionError: Tablero necesita tener un número par de cajas para que coincidan parejas.
[Finished in 1.0s with exit code 1]


En gambas después del Raise ya no podría conocer más información si usara la clase Error.
Ejemplo, tipo, línea...

Podría haber añadido algo parecido a esto:

Public Sub Main()
  
  If (TABLEROANCHO * TABLEROALTO) Mod 2 = 1 Then Error.Raise("Tablero necesita tener un número par de cajas para que coincidan parejas.")
  
Catch
  Print Error.Text
  Print Error.Code
  Print Error.Class
  Print Error.Where
  
  Print "Y esto ?"
  
End
 


El mensaje de Error.Raise no se muestra, pero si muestra la información a continuación del Catch.  Claro que también se mostraría el mensaje del final.
No se pararía la ejecución que e lo que hace Error.Raise.

Rectifico, si lo ejecuto y veo la salida de consola del editor:

Citar:

Tablero necesita tener un número par de cajas para que coincidan parejas.
-1
(Class 0x10377f8)
Main.Main.9
Y esto ?


Y si lo ejecuto como ejecutable:

Citar:

Tablero necesita tener un número par de cajas para que coincidan parejas.
-1
(Class 0x14f7978)
Main.Main.9


Parece que se para..

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Lunes, 07 May 2018, 08:57; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Errores En Una Aplicación De Consola 
 
Si hubiese usado el emulador de terminal de Gambas:

 emuladordeterminaldegambas

Sigue mostrándose el mensaje del final.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Errores En Una Aplicación De Consola 
 
Como condición..

Public Sub Main()
  
  valor = (TABLEROANCHO * TABLEROALTO) Mod 2
  
  If valor = 0 Then
    Print "Par..."
  Else
    Debug "Tablero necesita tener un número par de cajas para que coincidan parejas."
   ' Código para parar ejecución
  Endif
 


¿ Pararíais ahí de alguna forma ?.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Errores En Una Aplicación De Consola 
 
Shell:
Citar:
¿ Pararíais ahí de alguna forma ?.

Usando el comando quit

http://gambaswiki.org/wiki/lang/quit
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Errores En Una Aplicación De Consola 
 
Julio:

Citar:

Usando el comando quit


Ostras. Hace años que no veía esta instrucción. Como normalmente en formularios uso Me.Close,
se va olvidando quit.

Parece que da problemas con aplicaciones con formularios. Jeje, dice que se cerrará lo mejor posible.  
Creo que a más de uno de nosotros nos tiene que haber dado un quebradero de cabeza esta instrucción con formularios.

Mejor para consola, perfecto.  Visto así poco control de errores tiene.  

  If valor = 0 Then
    Print "Par..."
  Else
    Debug "Tablero necesita tener un número par de cajas para que coincidan parejas."
    Quit
  Endif
 

A ver si le puedo añadir algún detalle para conocer algo más del error.
Debe ser una instrucción muy repetida para casos de ese tipo. Mensaje de error y salida.

Gracias.  

P.d ¿ Soléis usar número de líneas en el código ?.  Puede ser complicado buscar un error sin número de línea.
Ya se que recuerda a viejos basic's.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Errores En Una Aplicación De Consola 
 
Shell:

Citar:
¿ Soléis usar número de líneas en el código ?.

Yo los pongo para que se vean. Asi si hay algun error, los puedo localizar rápidamente.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Errores En Una Aplicación De Consola 
 
Yo siempre muestro la combinación error.text;;error.where en los errores.
Sin embargo del tema que aquí se habla, la introducción de números distintos por parte del usuario, creo que está mal planteado: No es un error del programa, es un mal manejo del usuario.
Deja la gestión de errores para los errores del programa, es decir, para situaciones no contempladas previamente y depura los datos para avisar, repetir, explicar etc. los eventos generados por el usuario.

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Errores En Una Aplicación De Consola 
 
Shordi:

Es que en este caso, es algo como en producción, aun no habrá llegado a manos del usuario.
Todas esas constantes que maneja la aplicación pueden ser cambiadas y con eso cambiará
la presentación del tamaño del tablero, de cada celda de este, el tamaño del icono dentro estas.
Si no se provoca o se llama la atención a hacerlo, no se puede ver el efecto que causa.

Es un código que esta abierto. En parte es que estos códigos son para iniciarse en la creación de juegos
mediante un lenguaje de programación.

El uso de estas constantes enseña al programador a valorar el uso de estas, antes que usar variables
que puedan cambiarse al escribir.

Es un cambio de crear juegos de consola a una interfaz gráfica mediante una librería.
Un aprendizaje que cambia con cada nuevo juego.

Aunque intento implementar la creación de un juego de un lenguaje y traerlo a gambas,
luego resulta que me encuentro cosas muy diferentes, aunque se llamen igual.  


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Control De Errores soplo General 0 Lunes, 14 Septiembre 2009, 17:19 Ver último mensaje
soplo
No hay nuevos mensajes Control De Errores Global GambasLinux Aplicaciones/Fragmentos de Código 5 Jueves, 25 Febrero 2010, 21:02 Ver último mensaje
fabianfv
No hay nuevos mensajes Control De Errores Solucionado Pero No Con... Dani26 General 2 Martes, 04 Septiembre 2012, 20:46 Ver último mensaje
Dani26
No hay nuevos mensajes Problema Con Control De Errores Y Return E... Harpo Controles/Librerías/Componentes 13 Lunes, 27 Abril 2020, 18:22 Ver último mensaje
jguardon
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron