Handling the exception inside a stored procedure is obviously database specific; you'll probably find the details on your database documentation.
If there is an exception that escapes the stored procedure, it causes an SQLException to be thrown. Again, the details of how this exception is initialized are database specific, but sometimes it is possible to extract useful information from that. For example, in Oracle the SQLException message contains a stack-trace from the PL/SQL code.
subject: Exception handling for stored procedure from Java code