/// <summary>Initializes a new instance of the <see cref="ExceptionData"/> class.</summary>
        /// <param name="exception">The exception.</param>
        public ExceptionData(Exception exception)
        {
            if (exception == null)
            {
                throw new ArgumentNullException("exception");
            }

            this.exceptionType = exception.GetType().FullName;

            foreach (var k in exception.Data.Keys)
            {
                try
                {
                    var value = exception.Data[k];
                    var key   = k as string ?? k.ToString();
                    Add(key, value);
                }
                catch (Exception e)
                {
                    Console.WriteLine("ERROR: " + e);
                }
            }

            if (exception.InnerException == null)
            {
                return;
            }

            var exceptionData = new ExceptionData(exception.InnerException);

            exceptionData.AddTo(this);
        }
        /// <summary>Initializes a new instance of the <see cref="ExceptionData"/> class.</summary>
        /// <param name="exception">The exception.</param>
        public ExceptionData(Exception exception)
        {
            if (exception == null)
            {
                throw new ArgumentNullException("exception");
            }

            this.exceptionType = exception.GetType().FullName;

            foreach (var k in exception.Data.Keys)
            {
                try
                {
                    var value = exception.Data[k];
                    var key   = k as string ?? k.ToString();
                    Add(key, value);
                }
                catch (Exception e)
                {
                    SystemUtil.WriteError(e);
                }
            }

            if (exception.InnerException == null)
            {
                return;
            }

            var exceptionData = new ExceptionData(exception.InnerException);

            if (exceptionData.Count == 0)
            {
                return;
            }

            exceptionData.AddTo(this);
        }