Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Skeletron en 23 Enero 2010, 16:11 pm



Título: Problema al controlar excepcion en Visual Studio
Publicado por: Skeletron en 23 Enero 2010, 16:11 pm
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?

(http://img251.imageshack.us/img251/8897/errorj.jpg)


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: MANULOMM en 26 Enero 2010, 01:33 am
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


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: seba123neo en 26 Enero 2010, 02:02 am
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...


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: MANULOMM en 26 Enero 2010, 04:57 am
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


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: ABDERRAMAH en 26 Enero 2010, 11:58 am
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.


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Skeletron en 26 Enero 2010, 14:43 pm
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?


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: seba123neo en 26 Enero 2010, 15:32 pm
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.


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Keyen Night en 26 Enero 2010, 16:03 pm
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.


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Skeletron en 26 Enero 2010, 18:19 pm
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!!!


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: raul338 en 26 Enero 2010, 19:13 pm
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: (?


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: seba123neo en 26 Enero 2010, 19:29 pm
a mi tambien haciendo saltar el error a proposito siempre me entra por el Catch y nunca se me para el codigo con la linea verde y no aparece la Microsoft.visualbasic.dll, solo System.Exception.

¿podra ser que algo este pasando dentro de esa clase Imagen? lo podes poner ? o es privado ??  :)

cuanto tiene el count al momento de dispararse el error ?

yo probe con una clase cualquiera ir agregandola a la lista y nunca me tiro el error, solo que se me consumio casi toda la memoria de la PC , pero nunca llego al error y no queria seguir.


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Skeletron en 26 Enero 2010, 20:01 pm
Juro que imagen no tiene nada raro.. es una clase con 4 variables que en el constructor, guarda los 4 valores que le llegan...

Y mas raro aun, es que el error, no lo da cuando intenta crear un nuevo Objeto (que sería por falta de memoria), sino en la linea WHILE TRUE... o sea.. WTF?!??!?!?!?

Es muy raro ese comportamiento..


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: MANULOMM en 26 Enero 2010, 20:39 pm
A mi tambien me parece muy extraño por que salta la librerio de visualbasic? a mi el error me lo tira el mscorlib.dll que es el core del framework y donde estan las excepciones de este tipo....

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: seba123neo en 26 Enero 2010, 20:52 pm
si agarras ese pedazo de codigo y con la clase, lo pasas a un proyecto totalmente nuevo ¿tambien te lo hace?


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Skeletron en 26 Enero 2010, 21:12 pm
Es que, ESE, era un proyecto TOTALMENTE NUEVO...
Porque estoy por hacer un indexador.. entonces queria saber cuantos items me caben en un arraylist (por el tema de la RAM que dispongo)... entonces hice eso, para ver cual es el item maximo.. Y CHAN!!.. me doy con ésto..
Muy extraño...


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: raul338 en 26 Enero 2010, 21:38 pm
Una pregunta..... agrega algo a la lista antes de que tire el error? o lo tira de una? (lo digo por el While(True))??

Si no queres guardar tanto en memoria, anda guardando de a partes en archivos.... ahi es dificil de que se te acabe el espacio... (digo no?? XD)


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Skeletron en 26 Enero 2010, 23:12 pm
pero raul.. por dios y la santa virgen!!.....

En ningun momento de mi vida necesite hacer eso en algun programa..
NO ES UN PROGRAMA..
NO ME ESTA DANDO PROBLEMAS EN NINGUN PROGRAMA..
NO ESTA ESE FRAGMENTO DE CODIGO EN NINGUN PROGRAMA MIO..

SIMPLEMENTE HICE UNA PRUEBA....
SOLAMENTE UNA PRUEBA
TAN SOLO UNA PRUEBA
NADA MAS QUE UNA PRUEBA

Y si, agrega muy muchos items... digamos que en vez de dar el error de SIN MEMORIA, da ese.. en while true..


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: raul338 en 26 Enero 2010, 23:27 pm
No me mates, son solo ideas :xD

jaja... ya se, es solo la idea y punto, para que nunca a nadie que tenga una pc como la tuya le de el error. A parte es buena idea (imagina, alguien con 128 ram se le iria a colgar la ram no??)

Pues la verdad es rarisimo, y si pruebas con "While (Not False)" jajaja :rolleyes: :laugh:


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Keyen Night en 27 Enero 2010, 01:38 am
A mi me dio System.OutOfMemoryException, y quisas el error da en la linea del while porque el try lo pasa al while por que el try está por fuera del while, pero que pasa si el try lo pones dentro del while? osea:
Código
  1.        Dim x As New List(Of String)
  2.        While True
  3.            Try
  4.                x.Add(" ")
  5.            Catch ex As Exception
  6.                MsgBox(ex.Message & vbNewLine & x.Capacity & vbNewLine & x.Count)
  7.            End Try
  8.        End While

Casi todas las listas soportan 32 o 64 Mb de información, lo probe yo mismo.



Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Skeletron en 27 Enero 2010, 02:11 am
Se nos fue el rollo no?
En fin.. Era simplemente una curiocidad..
Me parece que es un errorcito de VIsual Studio, que hay que tenerlo en cuenta para los doños Microsoft que estan en el tema..


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: raul338 en 27 Enero 2010, 03:44 am
De hecho tu eres el unico que tiene el problema, a todos nos lo control bien  :silbar:


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: seba123neo en 27 Enero 2010, 22:58 pm
todo error es por algo, a veces humano o a veces de algo externo, como parece ser en este caso, pero en realidad siempre por un error humano, yo diria si queres solucionar el problema subas ese programa a un servidor asi lo chequeamos, total si es eso nomas, nadie aca va a copiarte nada del codigo.


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Skeletron en 28 Enero 2010, 00:13 am
Joder tios.. eso era lo unico en el programa...
Dios santo!..


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: [D4N93R] en 28 Enero 2010, 16:47 pm
Hola, en verdad es muy extraño xD

Pero intenta eso, solo para ir descartando:

En tu mismo equipo codea esa misma clase pero en C#, si, todos sabemos que es lo mismo, pero no todos saben que son compiladores diferentes y no quedan 100% en msil cuando haces algo en VB que en C#.

jajaja ya te dije que era un bucle infinito jajajjajajja que risa.. no se si te habras dado cuenta ajjajajjajjajjjajajajajjaajjajaja  :rolleyes:


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: DragonFire en 29 Enero 2010, 05:25 am
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!!!


Bueno, parece que en realidad el problema es.... que no queda memoeria ni siquiera para que el catch funcione, tambien ten en cuenta que en windows cada objeto tiene un identificador del sistema operativo, cada ventana, cada etiqueta, cuadro, radio, todos tienen un identificador unico que windows conoce, si los llevas al maximo, no podras crear nada mas, ni un objeto mas, por que windows ya no tiene la capacidad de manejarlo. incluso no tendria espacio para asignarle su identificador al catch


asi que pueden ser 2 cosas

1 agotaste los identificadores de cada ventana ( cada objeto se considera una ventana )
2 agotaste completamente la ram disponible para tu programa

yo creo que es la primea opcion


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: [D4N93R] en 29 Enero 2010, 19:55 pm
Si pero de todos modos no debe dar ese error asi sin pasar por el catch.

Error de visual studio no es, puede ser un error del framework, del clr,  pero no de VS..

Algo se esta saltando.. Que procesador tienes? 64 bit? posiblemente no este bien optimizado y da esos errores..


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: DragonFire en 29 Enero 2010, 23:33 pm
Si pero de todos modos no debe dar ese error asi sin pasar por el catch.

Error de visual studio no es, puede ser un error del framework, del clr,  pero no de VS..

Algo se esta saltando.. Que procesador tienes? 64 bit? posiblemente no este bien optimizado y da esos errores..

creo que no lo deje muy claro...

el mismo catch requiere un identificador (hdwnd) manejador de ventnas, como quieras llamarle...

el identificador es un numero entenro que si es llevado al limite, para evitar el desborde de su variable, simplemente no almacenara mas....

no hay espacio ni para asignarle al catch un identificador, no hay nada que atrape el error, el error no esta en el programa esta en la limitacion del sistema operativo


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: Skeletron en 30 Enero 2010, 00:17 am
Pero si hubo espacio para dar el mensaje de error con su respectivo texto en VISUAL STUDIO ¬¬

Pero.. puede ser


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: [D4N93R] en 1 Febrero 2010, 18:42 pm
Si pero de todos modos no debe dar ese error asi sin pasar por el catch.

Error de visual studio no es, puede ser un error del framework, del clr,  pero no de VS..

Algo se esta saltando.. Que procesador tienes? 64 bit? posiblemente no este bien optimizado y da esos errores..

creo que no lo deje muy claro...

el mismo catch requiere un identificador (hdwnd) manejador de ventnas, como quieras llamarle...

el identificador es un numero entenro que si es llevado al limite, para evitar el desborde de su variable, simplemente no almacenara mas....

no hay espacio ni para asignarle al catch un identificador, no hay nada que atrape el error, el error no esta en el programa esta en la limitacion del sistema operativo

Si tomas en consideracion esta respuesta:

Pero si hubo espacio para dar el mensaje de error con su respectivo texto en VISUAL STUDIO ¬¬

Pero.. puede ser

Era exactamente lo que te iba a poner. Ademas, el CLR te avisa en algunos casos con excepciones justo antes de que sucedan, al fin y al cabo esa es la idea de un lenguaje administrado :S Esto pasa con problemas de Memoria, Bucles infinitos, etc..

Por lo que debe ser, y estoy casi seguro, algún error en tu equipo, procesador, framework mal instalado, algun problema con tu Ram, quien sabe. yo ya probé tu código y se ejecuta "correctamente", es decir, va para el catch sin rollos! un saludo!


Título: Re: Problema al controlar excepcion en Visual Studio
Publicado por: seba123neo en 2 Febrero 2010, 03:34 am
ademas si fuera limite de handles, no podrias abrir ninguna ventana mas de windows...creo que esto el visual studio lo debe tener controlado sino seria un caos. por ahi lei que el limite de handles que puede crear por programa es de 10000, nunca lo pude probar, pero creo que esto no tiene nada que ver, ya que para que salte error de memoria no hace falta hacer un bucle infinito ni crear handles...