\"The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong go
You are probably better off throwing the superclass and more generic exception IOException
at any point in your code which involves reading or writing from the file.
The file may exist when your class's constructor runs, but that doesn't guarantee that:
etc.
Instead of reinventing the wheel, I would say just re-throw IOException wherever the JDK/java.io
classes you are using force you to do so.
Also I for one hate classes that throw Exceptions from their constructor - I'd get rid of these if I were you.