title: Extending IOException
body: <p>I have an exception (<code>MalformedDataException</code>) which extends <code>IOException</code>. Somewhere in the code it is thrown and it is temporarily 'caught' by the main class, like this:</p>
  
  <pre><code>public static void main(String[] args) throws MalformedDataException { ... }
  </code></pre>
  
  <p>But <strong>what is an input/output exception exactly?</strong> When does it have to be thrown? Should it be extended?</p>
  
  <p>The Oracle docs do not <em>explain</em> anything about it.</p>