title: Why Java StringReader throws IOException?
body: <p>Today I was working with Java class <code>StringReader</code> and I found it very annoying that it throws IOException on <code>read</code> method. I know that it extends <code>Reader</code> class in which method <code>read</code> throw IOException but I think that it is not needed for StringReader. This class doesn't use any external resources that might cause errors. </p>
  
  <p>After short investigation I found out that <code>StringReader#read</code> throws <code>IOException</code> if string which this class reads is null but de facto this <strong>can't happen</strong> because if we would try to pass null to <code>StringReader</code> constructor it throws NPE.</p>
  
  <p>What do you think about it, is it good practice to always throw the same exceptions as super class?</p>
  
  <hr>
  
  <p>Edit:
  As noted by U Mad Reader is a class not interface.</p>