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")); }
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); }
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); }
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); }