title: What is ApplicationException for in .NET?
body: <p>To throw exceptions, I usually use built-in exception classes, e.g. <code>ArgumentNullException</code> and <code>NotSupportedException</code>. However, sometimes I need to use a custom exception and in that case I write:</p>
  
  <pre><code>class SlippedOnABananaException : Exception { }
  class ChokedOnAnAppleException : Exception { }
  </code></pre>
  
  <p>and so on. Then I throw and catch these in my code. But today I came across the <code>ApplicationException</code> class - should I be using that instead? What's it for?</p>
  
  <p>It does seem inefficient to have lots of effectively identical Exception classes with different names (I don't usually need any individual functionality). But I dislike the idea of catching a generic <code>ApplicationException</code> and having to use extra code to determine what the error was.</p>
  
  <p>Where should <code>ApplicationException</code> fit in with my code?</p>