You can catch and handle an exception in the PostgreSQL back-end just like any
other exception. The back-end
ErrorData structure is exposed as a property in
ServerException class derived from
java.sql.SQLException, and the Java
try/catch mechanism is synchronized with the back-end mechanism.
Note: for several reasons (see [[Thoughts on logging]] for background),
ErrorData from your code is not
currently recommended, and in the future may become impossible. An improved
mechanism is expected in a future release. Until then, using only the
standard Java API of
java.sql.SQLException and its standard attributes
SQLState) is recommended wherever possible.
PL/Java will always catch exceptions that you don’t. They will cause a
PostgreSQL error and the message is logged using the PostgreSQL logging
utilities. The stack trace of the exception will also be printed if the
PostgreSQL configuration parameter
log_min_messages is set to
You will not be able to continue executing back-end functions until your function has returned and the error has been propagated when the back-end has generated an exception unless you have used a save-point. When a save-point is rolled back, the exceptional condition is reset and execution can continue.