The interface which the B&S uses throws some exceptions. My Database layer actually has to throw IO exceptions. How can I handle that ? Can I add those exceptions to the interface methods or shall I throw run time exceptions ?
you cannot modify the contract (your interface), so no you cannot throw your IOException.
What else then? subclass of the Exception type your Interface allows you... runtime exception... handling it at the db layer... There are tones of threads on this subject..
The choices are not infinite, but they come down to design choices. If you search on the forum, you'll see the most common solution... I think most of people choose to throw a runtime exception, which does not go against your contract..
This topic has been discussed in several posts. You search the forum, but as one of the options you can throw a RuntimeException or a subclass of RuntimeException, since the user can't do anything about it.