Como hacer seguimiento (trace) a excepciones CLR

En muchos casos tenemos errores de excepciones tipo CLR que no aportan mucha información para saber la causa de estos, y realizar el correcto seguimiento y ajuste de nuestro código, estas excepciones o errores ocurren cuando estamos trabajando con el framework de .net que no son manejados por el framework y son pasados a Dynamics AX.

Por ejemplo tenemos estos errores:

Object ‘CLRObject’ could not be created
ClrObject static method invocation error

o

Error de invocacion al metodo estatico CLRObject

Para realizar el seguimiento a este proceso vamos a utilizar las secuencias try y catch para capturar el detalle de la excepción, para esto primero debemos ubicar la linea que esta causando el error o excepción de CLR, para esto hacemos doble clic sobre el error generalmente nos lleva al código y la linea donde se produce el error.

Una vez identificada la linea que provoca el error usamos la sentencia try y catch para capturar la excepción de tipo Exception::CLRError, luego de esto dentro de la clausula catch vamos a capturar el mensaje usando la funcion CLRInterop::getLastException() y luego usando la función toString para mostrar la información en un mensaje, a continuación un pequeño job para ver como podemos capturar mas información adicional para saber que esta pasando:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
static void pruebaCLRException(Args _args) 
{ 
    ; 
 
    // Esta parte si ejecutamos en el AOS
    new InteropPermission(InteropKind::ClrInterop).assert();  
 
    try 
    { 
        //Esta parte causa la excepcion
        System.Int32::Parse("DynamicsAxLatino"); 
    } 
    catch(Exception::CLRError) 
    { 
        //Mostrar la ultima excepcion CLR
        info(CLRInterop::getLastException().ToString()); 
 
		// Otra opcion que puedes usar es
        //AifUtil::getClrErrorMessage
    } 
 
    //Restaurar los permisos
    CodeAccessPermission::revertAssert(); 
}

 No olvidemos asignar los permisos necesarios si ejecutamos este código en el servidor o en el AOS usando Code Access Permission Assert para ClrInterop.

Cualquier duda o inquietud no olvides usar los comentarios.

Articulos Relacionados

Si te gusto este articulo suscribete a nuestro Blog