From 738557b3a2ef279608cac41794846a9c203a36bf Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Sat, 30 Jun 2018 13:20:25 +0200 Subject: [PATCH] Add exception type that adds (potentially sensitive) details to error log --- Reporter.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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; + } } }