Tratamento de exceções quando o Java chama uma procedure

Eu quero fazer um tratamento de erros dentro de uma procedure chamada via jdbc, de forma que as regras de negócio (da procedure) possam levantar erros (raise error) conforme eu queira. Mas antes que eu consiga dentro da procedure detectar um erro e fazer um raise error, o erro em si já disparou uma exceção pro Java que, assim, não recebe a mensagem que a procedure devolve (não termina a execução da procedure após o erro). Como eu posso fazer? (obs: estou usando SyBase)

Hum, não entendi muito bem o que você quer fazer, mas me parece o seguinte:

public void meuMetodo() throws IOException { try { // alguma operação de risco } cath(IOException e) { throw new IOException(); } }

T+

Isso é tratamento básico de exceções. Não é isso que eu quero. Suponha que eu tenho

try{ CallableStatement cstmt = conn.prepareCall("{call ProcTeste}"); cstmt.execute(); } catch(SQLException e) { while(e!=null){ e.printStackTrace(); e = e.getNextException(); } }
Mas eu não quero que a exceção aconteça. Quero capturar o erro dentro da própria procedure e retornar uma mensagem de status ao final da execução da mesma. Só que mesmo quando eu tento capturar o erro dentro da procedure, a exceção é disparada antes que eu consiga tratá-la para retornar uma mensagem de status.

Há alguma maneira de impedir a procedure de disparar uma exceção, de modo que eu consiga retornar sempre uma mensagem de status previamente tratada? Veja abaixo:

try{ CallableStatement cstmt = conn.prepareCall("{call ProcTeste}"); ResultSet rs = cstmt.executeQuery(); rs.next(); System.out.println((String)rs.getString("status")); } catch(SQLException e) { // Essa exceção só deve ocorrer se eu não tratar um erro dentro da procedure while(e!=null){ e.printStackTrace(); e = e.getNextException(); } }