title: Procedure for exception handling (catch, log, report, fix) in end user desktop app
body: <p>I'm starting a new project, a end-user desktop application. I'm a concerned about what will happened if (ok, when) the end-user gets an unhandled exception. 
  Asking the user to help me reproduce the bug is not an acceptable option. 
  As I see it I'm left with one option: to upload an error report to my server.</p>
  
  <p>Years ago when I were a Delphi developer, a great tool called madExcept could help me with all this, but I cannot find a similar tool on the .Net framework. So I guess I have to make my own.</p>
  
  <p>Here is my idea</p>
  
  <ul>
  <li><p>Use a log-framework and write a few
  well thought log entries, not too
  many or few. Just log to memory,
  better performance and I don't need
  the file. Limit the log size to say 100KB.</p></li>
  <li><p>Use AOP to log parameters and return values on all methods, except those in a tight loop as it will clutter the log and cause bad performance. This is the point I'm really insecure about, is this a stupid thing to do in production? The benefit seems very appealing though. I think I should be able to reproduce the exception in a lot more cases, than having just a stack trace and a log. Also this will logged to a memory and limited to something like 200KB.</p></li>
  <li><p>Catch all unhandled exceptions, here I will upload the two logs and stack trace to my server.</p></li>
  </ul>
  
  <p>What do you think will it work? Is there a better way?</p>
  
  <p>Thanks</p>