Problema al controlar excepcion en Visual Studio

Iniciado por Skeletron, 23 Enero 2010, 16:11 PM

0 Miembros y 1 Visitante están viendo este tema.

Skeletron

Hola gente...
Depurando, probe una cosa...
Llenar una lista generica hasta quedarme sin memoria.. y ver cual es la cantidad de items posibles a agregar en el LIST...
La cuestion, es que, aunque haga un TRY CATCH.. Visual Studio, no me controla la escepcion.. que extraño no?


MANULOMM

mmm si ejecutas el exe te saldra un error de windows y pues claro si estas sin memoria el clr salta una excepcion del Sistema Operativo.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


seba123neo

Hola, para mi es porque no es un error "de codigo" digamos, por eso no se va por el catch, es un error que no puede ser controlado como dice el mismo error, es un error de memoria que se ve que va disminuyendo a medida que haces el bucle y ejecutas esa instruccion, por cierto ese bucle nunca termina...
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

MANULOMM

bueno pues la naturaleza de las excepciones en .net es que todas hereden de exception.

Hice la prueba a mi me va bien.
aunque este equipo es solo 1GB de Ram + Procesador 1.6 Ghz con Win 7.
y lo que he tenido es que al correr la prueba exactamente igual a la tuya (pero la lista era de Int's). he tenido que se ha lanzado la excepcion y me ha dicho tanto en count como capacity "134217728" pero este numero varia obviamente de las capacidades en hardware del equipo.


de hecho la excepcion que obtengo es de tipo "System.OutOfMemoryException" y pongo un punto de interrupcion el catch y logra parar obviamente despues de un bloqueo de maquina.

es de aclarar que trabajo con c#, en algunos casos los teams de los lenguajes suelen diferenciar algunas cosillas. puede ser una estas diferencias.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


ABDERRAMAH

La forma chapuzas de evitar eso sería

On error goto error
[...]


exit sub
error: msgbox("saltó la excepción")
end sub

Ésto no soluciona el problema, pero hace que visuabasic no bloquee el programa en ejecución, y en windows, te salta el mensaje de msgbox, pero no te cierra... ahora... tienes que encontrar el fallo, esto es una chapuza para evitar que salte error.

Skeletron

No quiero solucionar un problema.. Simplemente estaba testeando... queria ver cuantos items me llegan a entrar aproximadamente en un array en mi pc.. nada mas..

Ese error tendria que ser capturado.. SI O SI...
El End of FIle, tampoco es error de CODIGO!!.. una divicion por 0, tampoco es error de codigo.. y ningun error en tiempo de ejecucion es error de codigo, sin embargo todos son tomados por el catch..

Para mi, es algo muy raro esto...
Alguien podria probarlo con vb.net?

seba123neo

en el Catch no se si sabias podes ponerle lo que quieras, manejar la Excepcion que quieras, ponele esto Catch ex As System.OutOfMemoryException y proba...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Keyen Night

#7
Si te das cuenta estás en un bucle infinito que está llenando la memoria cientos de veces por segundo hasta que Windows lo detiene porque ya no hay memoria que usar; Como bien dijeron haya arriba no es un error de código simplemente te quedan sin memoria.
Cuando probe tu código efectivamente vi mientras mi memoria se iva saturando de datos hasta que el proceso llego a 1.600.000Kb de memoria en uso :o y dio el error.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Skeletron

YA SE QUE ES UN BUBLE INFINITO!! LO HICE A PROPOSITOO!!!!!

Pero si es un bucle infinito, no IMPORTA!!!.. cuando te quedas sin memoria, salta una excepcion, y TIENE QUE SER CONTROLADA POR EL CATCHª!!!...................!!!!!!!!!!!!!!.............!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! y NO SE ESTA CONTROLANDO!!!!!!!


ES UN ASQUEROSO BUG DE VISUAL!!!

raul338

#9
jajaj..... que risa :xD

:huh: es un error raro, yo lo probe y me entra al catch, deprunado o no, entra igual. Nota, yo tengo el visual 2008 con SP1!

Mi teoria antes de probar era que el thread se quedaba sin memoria disponible (sino imaginense, el visual se hubiera cortado tambien xD) entonces no podia seguir haciendo nada, ni catch ni finally, pero es raro.

EDIT: viendo mas el detalle de tu error, no se porque te tira "en Microsoft.VisualBasic.dll", a mi me tira solo:

"Se produjo una excepción de tipo 'System.OutOfMemoryException'." Tendra algo que ver o son dos versiones españolas distintas???  :xD

Mi gran pregunta tambien es porque no tenes el codigo coloreado..... :huh: (?