Exemplo n.º 1
0
        public static RaygunErrorMessage Build(Exception exception)
        {
            RaygunErrorMessage message = new RaygunErrorMessage();

            var exceptionType = exception.GetType();

            message.Message   = exception.Message;
            message.ClassName = exceptionType.FullName;

            message.StackTrace = BuildStackTrace(exception);
            message.Data       = exception.Data;

            AggregateException ae = exception as AggregateException;

            if (ae != null && ae.InnerExceptions != null)
            {
                message.InnerErrors = new RaygunErrorMessage[ae.InnerExceptions.Count];
                int index = 0;
                foreach (Exception e in ae.InnerExceptions)
                {
                    message.InnerErrors[index] = Build(e);
                    index++;
                }
            }
            else if (exception.InnerException != null)
            {
                message.InnerError = Build(exception.InnerException);
            }

            return(message);
        }
        public static RaygunErrorMessage Build(Exception exception)
        {
            RaygunErrorMessage message = new RaygunErrorMessage();

            var exceptionType = exception.GetType();

            message.Message   = exception.Message;
            message.ClassName = FormatTypeName(exceptionType, true);

            message.StackTrace = BuildStackTrace(exception);

            if (exception.Data != null)
            {
                IDictionary data = new Dictionary <object, object>();
                foreach (object key in exception.Data.Keys)
                {
                    if (!RaygunClientBase.SentKey.Equals(key))
                    {
                        data[key] = exception.Data[key];
                    }
                }
                message.Data = data;
            }

            if (exception.InnerException != null)
            {
                message.InnerError = Build(exception.InnerException);
            }

            return(message);
        }
        /// <summary>
        /// Creates <see cref="RaygunErrorMessage"/> for exception.
        /// </summary>
        protected RaygunErrorMessage CreateErrorMessage(Exception exception)
        {
            var message = new RaygunErrorMessage
            {
                ClassName  = exception.GetType().FullName,
                Message    = exception.Message,
                StackTrace = BuildStackTrace(exception)
            };

            if (exception.Data != null)
            {
                var data = new Dictionary <object, object>();
                foreach (object key in exception.Data.Keys)
                {
                    if (!ExceptionExtensions.SentKey.Equals(key))
                    {
                        data[key] = exception.Data[key];
                    }
                }
                message.Data = data;
            }

            if (exception is AggregateException ae && ae.InnerExceptions != null)
            {
                message.InnerErrors = ae.InnerExceptions.Select(ex => CreateErrorMessage(ex)).ToArray();
            }
        public void ReflectionTypeLoadExceptionSupport()
        {
            FileNotFoundException       ex1     = new FileNotFoundException();
            OutOfMemoryException        ex2     = new OutOfMemoryException();
            ReflectionTypeLoadException wrapper = new ReflectionTypeLoadException(new Type[] { typeof(FakeRaygunClient), typeof(WrapperException) }, new Exception[] { ex1, ex2 });

            RaygunErrorMessage message = RaygunErrorMessageBuilder.Build(wrapper);

            Assert.AreEqual(2, message.InnerErrors.Count());
            Assert.AreEqual("System.IO.FileNotFoundException", message.InnerErrors[0].ClassName);
            Assert.AreEqual("System.OutOfMemoryException", message.InnerErrors[1].ClassName);

            Assert.IsTrue(message.InnerErrors[0].Data["Type"].ToString().Contains("FakeRaygunClient"));
            Assert.IsTrue(message.InnerErrors[1].Data["Type"].ToString().Contains("WrapperException"));
        }
Exemplo n.º 5
0
        public static RaygunErrorMessage Build(Exception exception)
        {
            RaygunErrorMessage message = new RaygunErrorMessage();

            var exceptionType = exception.GetType();

            message.Message   = exception.Message;
            message.ClassName = FormatTypeName(exceptionType, true);

            message.StackTrace = BuildStackTrace(exception);

            if (exception.Data != null)
            {
                IDictionary data = new Dictionary <object, object>();
                foreach (object key in exception.Data.Keys)
                {
                    if (!RaygunClientBase.SentKey.Equals(key))
                    {
                        data[key] = exception.Data[key];
                    }
                }

                message.Data = data;
            }

            IList <Exception> innerExceptions = GetInnerExceptions(exception);

            if (innerExceptions != null && innerExceptions.Count > 0)
            {
                message.InnerErrors = new RaygunErrorMessage[innerExceptions.Count];
                int index = 0;
                foreach (Exception e in innerExceptions)
                {
                    message.InnerErrors[index] = Build(e);
                    index++;
                }
            }
            else if (exception.InnerException != null)
            {
                message.InnerError = Build(exception.InnerException);
            }

            return(message);
        }
        public static RaygunErrorMessage Build(Exception exception)
        {
            RaygunErrorMessage message = new RaygunErrorMessage();

            var exceptionType = exception.GetType();

            message.Message   = exception.Message;
            message.ClassName = FormatTypeName(exceptionType, true);

            message.StackTrace = BuildStackTrace(exception);
            message.Data       = exception.Data;

            if (exception.InnerException != null)
            {
                message.InnerError = Build(exception.InnerException);
            }

            return(message);
        }
        public static RaygunErrorMessage Build(Exception exception)
        {
            RaygunErrorMessage message = new RaygunErrorMessage();

            var exceptionType = exception.GetType();

            message.Message   = exception.Message;
            message.ClassName = exceptionType.FullName;

            message.StackTrace = BuildStackTrace(exception);

            if (exception.Data != null)
            {
                IDictionary data = new Dictionary <object, object>();
                foreach (object key in exception.Data.Keys)
                {
                    if (!RaygunClient.SentKey.Equals(key))
                    {
                        data[key] = exception.Data[key];
                    }
                }
                message.Data = data;
            }

            AggregateException ae = exception as AggregateException;

            if (ae != null && ae.InnerExceptions != null)
            {
                message.InnerErrors = new RaygunErrorMessage[ae.InnerExceptions.Count];
                int index = 0;
                foreach (Exception e in ae.InnerExceptions)
                {
                    message.InnerErrors[index] = Build(e);
                    index++;
                }
            }
            else if (exception.InnerException != null)
            {
                message.InnerError = Build(exception.InnerException);
            }

            return(message);
        }
Exemplo n.º 8
0
        public static RaygunErrorMessage Build(Exception exception)
        {
            RaygunErrorMessage message = new RaygunErrorMessage();

            var exceptionType = exception.GetType();

            MonoTouchException mex = exception as MonoTouchException;

            if (mex != null && mex.NSException != null)
            {
                message.Message   = mex.NSException.Reason;
                message.ClassName = mex.NSException.Name;
            }
            else
            {
                message.Message   = exception.Message;
                message.ClassName = FormatTypeName(exceptionType, true);
            }

            message.StackTrace = BuildStackTrace(exception);
            message.Data       = exception.Data;

            AggregateException ae = exception as AggregateException;

            if (ae != null && ae.InnerExceptions != null)
            {
                message.InnerErrors = new RaygunErrorMessage[ae.InnerExceptions.Count];
                int index = 0;
                foreach (Exception e in ae.InnerExceptions)
                {
                    message.InnerErrors[index] = Build(e);
                    index++;
                }
            }
            else if (exception.InnerException != null)
            {
                message.InnerError = Build(exception.InnerException);
            }

            return(message);
        }
Exemplo n.º 9
0
        public static RaygunErrorMessage Build(Exception exception)
        {
            var message = new RaygunErrorMessage();

            var exceptionType = exception.GetType();

            message.Message   = exception.Message;
            message.ClassName = exceptionType.FullName;

            message.StackTrace = BuildStackTrace(exception);

            if (exception.Data != null)
            {
                var data = new Dictionary <object, object>();
                foreach (var key in exception.Data.Keys)
                {
                    if (!RaygunClientBase.SentKey.Equals(key))
                    {
                        data[key] = exception.Data[key];
                    }
                }

                message.Data = data;
            }

            var ae = exception as AggregateException;

            if (ae != null && ae.InnerException != null)
            {
                message.InnerErrors = BuildInnerErrors(ae.InnerExceptions);
            }
            else if (exception.InnerException != null)
            {
                message.InnerError = Build(exception.InnerException);
            }

            return(message);
        }
        public void ErrorMessageHasInnerError()
        {
            var errorMessage = new RaygunErrorMessage(_exception);

            Assert.That(errorMessage.InnerError, Is.Not.Null);
        }