Dynamics AX
  RSS Feed  LinkedIn  Twitter
Want to turn you're data into a true asset? Ready to break free from the report factory?
Ready to gain true insights that are action focused for truly data informed decisions?
Want to do all of this across mutliple companies, instances of Dynamics and your other investments?
Hillstar Business Intelligence is the answer then! (www.HillstarBI.com)

Hillstar Business Intelligence for Microsoft Dynamics AX and NAV on Mobile, Desktop, Tablet

Let us prove to you how we can take the complexity out of the schema and truly enable users to answer the needed questions to run your business! Visit Hillstar Business Solutions at: www.HillstarBI.com

Wednesday, February 24, 2010

Quick Post: Catching ClrErrors in X++

I wanted to do a quick post actually with some X++ code. I know this exists already on the web somewhere, but it's always handy code when working with .Net Assemblies, WCF Services, etc.

So the following is a great way to catch and see what all is going on with any .Net error being thrown.:

System.Execption ex;
str ClrErrCatch;


// Do some code work here...

catch (Exception::ClrError)

ex = ClrInterop::getLastException();

if (ex != null)
ClrErrCatch = ex.get_Message();
ClrErrCatch += ex.get_StackTrace();
ex = ex.get_InnerException();
if (ex != null)
ClrErrCatch += ex.ToString();



Now the above assumes your making correct use of CAS, or Code Access Security, with an InterOpPermission.Assert() going on.

The point with this post is to give a good template for working with Clr errors. This includes anytime you reference any of the System.* .Net Assemblies, your own custom .Net assemblies, and also Service references of any type, be that Web or WCF.

Check back soon, as more good post are coming on. Also this can be included in our WCF series of post going on as well.

"Visit the Dynamics AX Community Page today!"

Labels: , , , , , , , ,


Blogger Nathan said...

Hi there Brandon,
I'm trying to figure out why your variable ex would ever be null. You test for this in your catch block. It implies ClrInterop::getLastException() can return null, as in fact I've found. However, this isn't what I was expecting and it is quite a problem for me.
Is there some environment setting that could be involved?

1:24 AM  

Post a Comment

<< Home

Copyright 2005-2011, J. Brandon George - All rights Reserved