I would create a new exception called a DAOException, which is NOT a RuntimeException, and force the method user to handle such exceptions, possibly an enumeration as a member of the DAOException that describes the exception (possibly adding the actual exception internally as an internal exception).
So an exception might look like this:
new DAOException(DAOException.TYPE.SQLE, e)
and the saveHourMin method throws a DAOException.
Thus, if you have all kinds of problems, all this with the same exception, and you do not need to handle different ones.
I suggest using a general exception rather than a Runtime, because I don't want it to be optional to handle the exception. Anyone who calls this method should be aware that such a problem can occur and provide appropriate handling (even if it means that you are throwing a new RuntimeException, God forbid, but now it depends on them and this is their solution). As a rule, I avoid using RuntimeExceptions because they make the execution path unclear ("someone will probably catch it somewhere along the execution path, or he will kill the application, so letting go of it normally" doesn't sound good to me) .
source share