privatevoidsave3dHeader(){try{Database.getConnection().createStatement().execute("insert into header_3d "+"values ((select nvl(max(header_id)+1,0) from header_3d), "+"1, "+"0, "+"'Integer 4-Byte', "+"0, "+"'Integer 4-Byte')");}catch(SQLExceptionex){if(ex.getErrorCode()==1){// TRATAR A EXCESSAO AQUI}else{// DELEGAR O TRATAMENTO DA EXCESSAO PARA A ORIGEM DA CHAMADA}}}
Você quer tratar justamente uma SQLException ?
Normalmente é lançada uma RuntimeException quando ela ocorre, devido ao fato de que há n fatores que pode implicar nessa exceção.
privatevoidsave3dHeader(){try{Database.getConnection().createStatement().execute("insert into header_3d "+"values ((select nvl(max(header_id)+1,0) from header_3d), "+"1, "+"0, "+"'Integer 4-Byte', "+"0, "+"'Integer 4-Byte')");}catch(SQLExceptionex){if(ex.getErrorCode()==1){// TRATAR A EXCESSAO AQUI}else{// DELEGAR O TRATAMENTO DA EXCESSAO PARA A ORIGEM DA CHAMADA}}}
Obrigado!
A forma geral que vc sempre pode usar é assim (padrão Exception Handler)
privatevoidsave3dHeader(){try{Database.getConnection().createStatement().execute("insert into header_3d "+"values ((select nvl(max(header_id)+1,0) from header_3d), "+"1, "+"0, "+"'Integer 4-Byte', "+"0, "+"'Integer 4-Byte')");}catch(Exceptionex){throwhandleException(ex);}}privateDataAccessExceptionhandleException(Exceptione){if(einstanceofSQLException){if(ex.getErrorCode()==1){returnExcecaoQueSignificaQueEsteCodigoAconteceu(e);}}// outros ifs returnnewDataAccessException(e);}
Se vc além de detactar vc precisa fazer alguma coisa real , por exemplo fazer query de outra forma vc faria assim (pode fazer como humberto.lima falou também. Esta opção aqui é mais geral e vc pode usar mesmo quando não é um SQLException)
privatevoidsave3dHeader(){try{Database.getConnection().createStatement().execute("insert into header_3d "+"values ((select nvl(max(header_id)+1,0) from header_3d), "+"1, "+"0, "+"'Integer 4-Byte', "+"0, "+"'Integer 4-Byte')");}catch(Exceptionex){DataAccessExceptione=handleException(ex);if(einstanceofExcecaoQueSignificaQueEsteCodigoAconteceu){// faz a query de outra forma}else{throwe;}}}
Assim vc separa a detecção da exceção e o tratamento da exceção. Em outros métodos da mesma classe vc usaria o mesmo handleException que iria detectar o mesmo problema caso ocorra, mas nem sempre vc que dar um tratamento especifico.