If you know me you will know that I love GUIDs and use them for everything. One of the things I use them for is to create a unique identifier to error messages in my code. I have override the Exception class adding my own method that looks like this: public ProviderException(System.Guid error, string message, Exception innerException) : base(String.Format(CultureInfo.CurrentCulture, "{{{0}}}: {1}", error.ToString(), message, innerException)) { } Basically, anytime that I want to throw an exception in my code, I do so with a unique GUID. The calling code looks like this: catch(SoapException soapException) { throw (new ProviderException(new Guid("{513EEF48-8C02-4135-9344-2A401EAF2112}"), soapException.Message, soapException)); } I have the option of creating my own message, and I always pass the exception I am trapping as the inner exception. Notice that I have a hard coded GUID in my code. It is not Guid.NewGuid() –