Instead of returning true or false, you can throw a business exception from your own (perhaps a hierarchy over a RuntimeException, which makes sense for your problem).
How do you discover which particular problem was another problem. You can deploy your own translation compiler, which, depending on the SQLException, will throw an exception (specific to your business).
Note that for this particular method that you represent, it would be better to query the database first for the key to exist and throw a UserAlreadyExistsException (or something else).
source share