diff --git a/Reporter.cs b/Reporter.cs index ccd0a9f0..3a563263 100644 --- a/Reporter.cs +++ b/Reporter.cs @@ -46,8 +46,9 @@ public bool Log(string data){ public void HandleException(string caption, string message, bool canIgnore, Exception e){ bool loggedSuccessfully = Log(e.ToString()); - - FormMessage form = new FormMessage(caption, message+"\nError: "+e.Message, canIgnore ? MessageBoxIcon.Warning : MessageBoxIcon.Error); + + string exceptionText = e is ExpandedLogException ? e.Message+"\n\nDetails with potentially sensitive information are in the Error Log." : e.Message; + FormMessage form = new FormMessage(caption, message+"\nError: "+exceptionText, canIgnore ? MessageBoxIcon.Warning : MessageBoxIcon.Error); Button btnExit = form.AddButton(FormMessage.Exit); Button btnIgnore = form.AddButton(FormMessage.Ignore, DialogResult.Ignore, ControlType.Cancel); @@ -95,5 +96,15 @@ public static void HandleEarlyFailure(string caption, string message){ Environment.FailFast(message, new Exception(message)); } } + + public sealed class ExpandedLogException : Exception{ + private readonly string details; + + public ExpandedLogException(Exception source, string details) : base(source.Message, source){ + this.details = details; + } + + public override string ToString() => base.ToString()+"\r\n"+details; + } } }