Try Catch y Ensamblados

20/06/2005 - 16:10 por Irak Rubio | Informe spam
Hola, que tal, mi duda es la siguiente:
A ver si me explico:
Tengo un proyecto libreria DLL que contiene funciones y misma que cuando un
parámetro que envía una aplicacion (que tenga la dll referenciada) no cumple
con alguna condicion, le lanzo una excepcion con throw new exception..., pero
al momento en que mando la excepcion, el depurador de VB.net me detiene mero
en donde tengo la instruccion Throw de la Dll, y yo deséo que me detenga en
la funcion de la aplicacion que mando llamar al procedimiento de la dll en
cuestion.

Existe alguna forma de hacer eso?
Saludos y gracias

Preguntas similare

Leer las respuestas

#1 Julio Casal
20/06/2005 - 18:07 | Informe spam
Solo debes poner un breakpoint en la linea de codigo en la cual tú llamas a
la función de la dll que dispara la excepción, amigo.

Saludos.

Julio Casal
Developer Senior .Net
MCP


"Irak Rubio" wrote:

Hola, que tal, mi duda es la siguiente:
A ver si me explico:
Tengo un proyecto libreria DLL que contiene funciones y misma que cuando un
parámetro que envía una aplicacion (que tenga la dll referenciada) no cumple
con alguna condicion, le lanzo una excepcion con throw new exception..., pero
al momento en que mando la excepcion, el depurador de VB.net me detiene mero
en donde tengo la instruccion Throw de la Dll, y yo deséo que me detenga en
la funcion de la aplicacion que mando llamar al procedimiento de la dll en
cuestion.

Existe alguna forma de hacer eso?
Saludos y gracias
Respuesta Responder a este mensaje
#2 Irak Rubio
20/06/2005 - 18:39 | Informe spam
Gracias por contestar Julio, Bueno, en realidad, haz de cuenta que la DLL la
he construido como una libreria externa y que cuando mande un error, otros
programadores básicamente no puedan ver en sí las lineas de codigo de mi DLL,
sino que el error les bote a ellos en la funcion que hayan llamado, Por
ejemplo:
Supon que van a utilizar una funcion de mi DLL que efectua una division:

Dim MyAssembly as new MyDll
'Dividir
dim x As Integer =1
Dim Y as integer =0

'El error debería aparecer aqui
msgbox MyAssembly.Dividir(X,Y)

pero aparece dentro de mi ensamblado cuando al evaluar le lanzo un
divisionbyzeroexception
(esto es un ejemplo) puede ser cualquier otra cosa...

Gracias.





"Julio Casal" escribió:

Solo debes poner un breakpoint en la linea de codigo en la cual tú llamas a
la función de la dll que dispara la excepción, amigo.

Saludos.

Julio Casal
Developer Senior .Net
MCP


"Irak Rubio" wrote:

> Hola, que tal, mi duda es la siguiente:
> A ver si me explico:
> Tengo un proyecto libreria DLL que contiene funciones y misma que cuando un
> parámetro que envía una aplicacion (que tenga la dll referenciada) no cumple
> con alguna condicion, le lanzo una excepcion con throw new exception..., pero
> al momento en que mando la excepcion, el depurador de VB.net me detiene mero
> en donde tengo la instruccion Throw de la Dll, y yo deséo que me detenga en
> la funcion de la aplicacion que mando llamar al procedimiento de la dll en
> cuestion.
>
> Existe alguna forma de hacer eso?
> Saludos y gracias
Respuesta Responder a este mensaje
#3 Julio Casal
20/06/2005 - 18:51 | Informe spam
Por eso amigo. Según entiendo, tú lo que deseas es que el programa se detenga
en la línea que llama al método de tu dll. Entonces, lo que puedes hacer es
esto:

1. Try
2. msgbox MyAssembly.Dividir(X,Y)
3. Catch(ex as Exception)
4. 'Manejo de la excepción
5. End Try

Puse los números de linea solo para efectos de referencia. Entonces, pon un
breakpoint en la linea 2 y ahí parará tu programa de seguro. Sino, ponlo en
la linea 3 y alli podrás explorar el motivo de la excepción.

Saludos.

Julio Casal
Developer Senior .Net
MCP


"Irak Rubio" wrote:

Gracias por contestar Julio, Bueno, en realidad, haz de cuenta que la DLL la
he construido como una libreria externa y que cuando mande un error, otros
programadores básicamente no puedan ver en sí las lineas de codigo de mi DLL,
sino que el error les bote a ellos en la funcion que hayan llamado, Por
ejemplo:
Supon que van a utilizar una funcion de mi DLL que efectua una division:

Dim MyAssembly as new MyDll
'Dividir
dim x As Integer =1
Dim Y as integer =0

'El error debería aparecer aqui
msgbox MyAssembly.Dividir(X,Y)

pero aparece dentro de mi ensamblado cuando al evaluar le lanzo un
divisionbyzeroexception
(esto es un ejemplo) puede ser cualquier otra cosa...

Gracias.





"Julio Casal" escribió:

> Solo debes poner un breakpoint en la linea de codigo en la cual tú llamas a
> la función de la dll que dispara la excepción, amigo.
>
> Saludos.
>
> Julio Casal
> Developer Senior .Net
> MCP
>
>
> "Irak Rubio" wrote:
>
> > Hola, que tal, mi duda es la siguiente:
> > A ver si me explico:
> > Tengo un proyecto libreria DLL que contiene funciones y misma que cuando un
> > parámetro que envía una aplicacion (que tenga la dll referenciada) no cumple
> > con alguna condicion, le lanzo una excepcion con throw new exception..., pero
> > al momento en que mando la excepcion, el depurador de VB.net me detiene mero
> > en donde tengo la instruccion Throw de la Dll, y yo deséo que me detenga en
> > la funcion de la aplicacion que mando llamar al procedimiento de la dll en
> > cuestion.
> >
> > Existe alguna forma de hacer eso?
> > Saludos y gracias
Respuesta Responder a este mensaje
#4 Tristan
21/06/2005 - 18:56 | Informe spam
No se si te comprendo bien, Irak.

Si el ensamblado (dll) está compilado en modo Release, no llevará
información de depuración. Por lo tanto, no se puede interrupir en él.
Obtendrás el error en la línea del proyecto que utiliza la librería.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#5 Tristan
21/06/2005 - 19:06 | Informe spam
Por cierto, por si acaso lo desconoces, puedes combinar el tipo de
compilación de los proyectos de una misma solución. Lo tienes en Propiedades
de la solucíón - configuración...

Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida