title: When an IOException generally occur and what action should I take to properly handle it?
body: <p>I am using File Input/Output streams. I know that reading a non-existent file from program using <code>FileInputStream</code> will give <code>FileNotFoundException</code>. Right? So I can catch this excpetion and can return null or 0 value(depends on return type of my method performing all this reading operations) on Exception to convey the calling program that file does not exist and should create the one.</p>
  
  <p>But I don't know when <code>IOException</code> generally occurs and what is the exact reason I should convey to calling program that 'this' has happened because of 'that'.
  I exactly don't know what is 'this' and 'that' here.</p>
  
  <p>Anybody please elaborate me in what cases does the <code>IOException</code> can occur and what specific action should I take in such case.
  Please help. Thanks. </p>