Try catch

Started by Yawin, May 23, 2011, 06:34:58 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

Pues mi duda es muy sencilla: existe en Bennu el try catch??

¿¿Sabéis a qué me refiero no??
En C# sería:
try
{
    loquesea;
}
catch(exception err)
{
    lo que sea
}
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Yawin

Vaya por dios... con lo útil que es... xDDD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Drumpi

¿Por qué? En bennu no hay excepciones, hay valores que indican error (generalmente valores negativos o cero) si la función no va como debería, y en caso de error grave, es el SO el que da la voz de alarma (segmentation fault o ventanazo de error) :P
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: Drumpi on May 23, 2011, 06:42:31 PM
¿Por qué? En bennu no hay excepciones, hay valores que indican error (generalmente valores negativos o cero) si la función no va como debería, y en caso de error grave, es el SO el que da la voz de alarma (segmentation fault o ventanazo de error) :P

vos decis que existe eso en bennugd? explica entonces como se hace.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Lo de los valores negativos y 0 ahí está, lo de las voces de alarma no tengo constancia, no, pero la idea mola.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Yawin

Pues molaría que se pudiese hacer un try catch, de forma que intentas entrar a un fichero que no existe y si está dentro de un try catch pos salte al catch. No se, creoq ue puede ser una herramienta util.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

SplinterGU

nadie dice que no molaria, solo que la respuesta a la pregunta si existe es "no"
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Entonces esto no se implementará, estoy en lo cierto ?  ;D

SplinterGU

Quote from: FreeYourMind on May 23, 2011, 11:04:12 PM
Entonces esto no se implementará, estoy en lo cierto ?  ;D

te equivocas, por que ese razonamiento? nadie hablo de que se hara o no, por que tu asumes que no se hara?

por otro lado, para que te pensas que estan reservados los simbolos onerror?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

la respuesta no era 'no' ?  ;D

Yawin

A ver, el ha dicho no a que no está implementado en la versión actual. Nadie ha hablado de futuras versiones xDDD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Drumpi

Quote from: SplinterGU on May 23, 2011, 07:55:02 PM
Quote from: Drumpi on May 23, 2011, 06:42:31 PM
¿Por qué? En bennu no hay excepciones, hay valores que indican error (generalmente valores negativos o cero) si la función no va como debería, y en caso de error grave, es el SO el que da la voz de alarma (segmentation fault o ventanazo de error) :P
vos decis que existe eso en bennugd? explica entonces como se hace.

??? yo no he dicho tal cosa. ¿Cómo se hace el qué?

Quote from: yawin on May 23, 2011, 08:15:58 PM
Pues molaría que se pudiese hacer un try catch, de forma que intentas entrar a un fichero que no existe y si está dentro de un try catch pos salte al catch. No se, creoq ue puede ser una herramienta util.

Si intentas entrar en un fichero que no existe:
-Pirmero, tienes GLOB, FILE_EXISTS y otras funciones para saber si existe o no el fichero.
-Segundo, si usas FOPEN y hay un fallo (no existe o no se puede abrir) este devuelve 0.
-Tercero, si aun así insistes y usas FREAD o similares, devolverán el número de datos leidos, en este caso, cero.

Vamos, que si sigues necesitando TRY-CATCH, es que te gusta hacer las cosas a las bravas :D
Y con todas las funciones es igual, al menos con el 90% de ellas. TRY-CATCH puede venir bien si trabajamos con punteros o con arrays, para evitar que se cierre el programa por un segmentation fault (error que da SDL, Windows, Linux...).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: Drumpi on May 26, 2011, 08:03:34 PM
Quote from: SplinterGU on May 23, 2011, 07:55:02 PM
Quote from: Drumpi on May 23, 2011, 06:42:31 PM
¿Por qué? En bennu no hay excepciones, hay valores que indican error (generalmente valores negativos o cero) si la función no va como debería, y en caso de error grave, es el SO el que da la voz de alarma (segmentation fault o ventanazo de error) :P
vos decis que existe eso en bennugd? explica entonces como se hace.

??? yo no he dicho tal cosa. ¿Cómo se hace el qué?

Quote from: yawin on May 23, 2011, 08:15:58 PM
Pues molaría que se pudiese hacer un try catch, de forma que intentas entrar a un fichero que no existe y si está dentro de un try catch pos salte al catch. No se, creoq ue puede ser una herramienta util.

Si intentas entrar en un fichero que no existe:
-Pirmero, tienes GLOB, FILE_EXISTS y otras funciones para saber si existe o no el fichero.
-Segundo, si usas FOPEN y hay un fallo (no existe o no se puede abrir) este devuelve 0.
-Tercero, si aun así insistes y usas FREAD o similares, devolverán el número de datos leidos, en este caso, cero.

Vamos, que si sigues necesitando TRY-CATCH, es que te gusta hacer las cosas a las bravas :D
Y con todas las funciones es igual, al menos con el 90% de ellas. TRY-CATCH puede venir bien si trabajamos con punteros o con arrays, para evitar que se cierre el programa por un segmentation fault (error que da SDL, Windows, Linux...).

que quisiste decir? porque sigo pensando que quisiste decir eso.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Pues quise decir que todas las funciones, en caso de error, en lugar de provocar una excepción (que interrumpe el programa y todo eso) devuelven un código de error para que se pueda seguir con la ejecución normal del programa o alterarlo para arreglarlo o dar el aviso.
En el caso de que el error sea muy grave (lectura de memoria fuera de rango, división por cero o similares) salta una excepción, pero no desde Bennu, sino desde el Sistema Operativo (o desde las SDL). Quizás ahí fuese interesante tener la opción de corregir o salir limpiamente del programa, pero que actualmente bennu no lo tiene.

¿Así queda más claro? :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)