title: When should checked exception/unchecked exception be chosen?
body: <p>I have learned from various tutorial that "If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception." </p>
  
  <p>I really want to see the effectiveness of previous statement through some code examples.
  e.g. </p>
  
  <pre><code>try {
          br.readLine();
      } catch (IOException e) {
  
          e.printStackTrace();
      }
  </code></pre>
  
  <p>Here, IOException is checked Exception.So, how I'm supposed to recover when this Exception occurs? Here, I'm excluding the exception logging,exception re-throwing tasks since they are not actually recovering i.e making things right. So, what modification should be applied here to recover from it?</p>
  
  <p>If there's a way to recover from it, then the same kind of approach can be applied to the following code :</p>
  
  <pre><code> try{
      Integer.parseInt("ghg4");
   }catch(NumberFormatException nfe){   
     }
  </code></pre>
  
  <p>Here NumberFormatException is a Runtime/unchecked exception.So if there's a way to recover from it, then why is it declared as Runtime exception in the first place?</p>