I keep getting stuck conceptually on deciding an Exception-handling structure for my project.
Suppose you have, as an example:
public abstract class
If you're not explicitly stating that read() can throw an exception, then you'll surprise developers when it does.
read()
In your particular case I'd catch the underlying exceptions and rethrow them as a new exception class DataException or DataReadException.
DataException
DataReadException