Month: enero 2015

Errores Interop CLR y manejo de Infolog en Microsoft Dynamics AX 2012

Al trabajar con objetos del framework .NET (algo muy común en AX 2012), debemos tener en cuenta el tratamiento de errores CLR. El tratamiento de errores en Dynamics AX es transparente y no necesita dedicarle demasiada atención durante el desarrollo en X++, pero cuando interviene el Interop con .NET, el manejo de los errores CLR se debe especificar de forma explícita. El código que suelo utilizar habitualmente (copiado y pegado de mi repositorio personal) como punto de inicio es el siguiente:
static void JAEE_CLRError(Args _args) 
{ 
    System.Exception ex;
 
    new InteropPermission(InteropKind::ClrInterop).assert();  
 
    try 
    { 
        System.Int32::Parse("JAEE");  // Error: no se puede convertir un texto a Int32
    } 
    catch (Exception::CLRError)
    {
        ex = ClrInterop::getLastException();
        if (ex != null) 
        {
            info(ex.get_Message());
            ex = ex.get_InnerException();
            if (ex != null)
                error(ex.ToString());
        }
    }    
    catch (Exception::Internal)
    {
        ex = ClrInterop::getLastException();
        if (ex != null) 
            info(ex.get_Message());
    }   
 
    CodeAccessPermission::revertAssert(); 
}
(más…)