title: Best Practice for Exception Handling in a Windows Forms Application?
body: <p>I'm currently in the process of writing my first Windows Forms application. I've read a few C# books now so I've got a relatively good understanding of what language features C# has to deal with exceptions. They're all quite theoretical however so what I haven't got yet is a feel for how to translate the basic concepts into a good exception-handling model in my application.</p>
  
  <p>Would anyone like to share any pearls of wisdom on the subject? Post any common mistakes you've seen newbies like myself make, and any general advice on handling exceptions in a way that will my application more stable and robust.</p>
  
  <p>The main things I'm currently trying to work out are:  </p>
  
  <ul>
  <li>When should I re-throw an exception?</li>
  <li>Should I try to have a central error-handling mechanism of some kind?</li>
  <li>Do handling exceptions which might be thrown have a performance hit compared with pre-emptively testing things like whether a file on disk exists?</li>
  <li>Should all executable code be enclosed in try-catch-finally blocks?</li>
  <li>Are there any times when an empty catch block might be acceptable?</li>
  </ul>
  
  <p>All advice gratefully received!</p>