/// <summary> /// Get handled exception's by additional data. /// </summary> /// <param name="exp">>The occurrence raw error.</param> /// <param name="frames">The array of <see cref="System.Diagnostics.StackFrame"/> to changes by exception stackTrace</param> /// <param name="snapshot">Capture screen or not?</param> public Error(Exception exp, StackFrame[] frames = null, bool snapshot = true) { #region HResult [Exception Type Code] HResult = exp.HResult; #endregion #region Error Line Column LineColumn = new CodeScope(exp); #endregion #region Method Method = (exp.TargetSite != null && exp.TargetSite.ReflectedType != null) ? exp.TargetSite.ReflectedType.FullName + "." + exp.TargetSite : ""; #endregion #region Id = HashCode Id = GetHashCode(); #endregion #region Screen Capture // First initialize Snapshot of Error, because that's speed is important! if (!SqlCompactEditionManager.ErrorIds.ContainsKey(Id) && snapshot) { Snapshot = ScreenCapture.Capture(); if (Snapshot != null && ErrorHandlingOption.ResizeSnapshots) { Snapshot = Snapshot.ResizeImage(ScreenCapture.ReSizeAspectRatio.Width, ScreenCapture.ReSizeAspectRatio.Height); } } #endregion #region StackTrace StackTrace = CodeScope.StackFramesToString(frames) ?? (exp.InnerException != null ? exp.InnerException.StackTrace ?? "" : exp.StackTrace ?? ""); #endregion #region Error Date Time ErrorDateTime = DateTime.Now; #endregion #region Server Date Time ServerDateTime = ErrorHandlingOption.FetchServerDateTime ? NetworkHelper.GetServerDateTime() : DateTime.Now; #endregion #region Current Culture CurrentCulture = String.Format("{0} ({1})", InputLanguage.CurrentInputLanguage.Culture.NativeName, InputLanguage.CurrentInputLanguage.Culture.Name); #endregion #region Message Message = exp.Message; #endregion #region Member Type MemberType = (exp.TargetSite != null) ? exp.TargetSite.MemberType.ToString() : ""; #endregion #region Module Name ModuleName = (exp.TargetSite != null) ? exp.TargetSite.Module.Name : ""; #endregion #region User [Domain.UserName] User = Environment.UserDomainName + "\\" + Environment.UserName; #endregion #region Host [Machine Name] Host = Environment.MachineName; #endregion #region Operation System Information OS = new OperationSystemInfo(true).ToString(); #endregion #region Application Name [Name v#####] AppName = Connection.GetRunningAppNameVersion(); #endregion #region Process Name String List Processes = new CurrentProcesses().ToString(); #endregion #region IsHandled default value is true IsHandled = true; #endregion #region Current Static Valid IPv4 Address IPv4Address = NetworkHelper.GetIpAddress(); #endregion #region Network Physical Address [MAC HEX] MacAddress = NetworkHelper.GetMacAddress(); #endregion #region Common Language Runtime Version [Major.Minor.Build.Revison] ClrVersion = Environment.Version.ToString(); #endregion #region Error Type ErrorType = exp.GetType().Name; #endregion #region Source Source = exp.Source; #endregion #region Data Data = DictionaryToXml(GetAdditionalData(exp), "ExtraProperties"); #endregion }