2012-01-18 20 views
11

Wszystko jest genialne, dopóki nie natknę się na miejsce, w którym naprawdę muszę złapać wyjątek. Kiedy umieścićspring jdbcTemplate jak złapać wyjątek?

jdbcTemplate.query(something...) 

w

try{} 

bloku uzyskać:

Unreachable catch block for SQLException. This exception is never thrown from the try statement body. 

Co mam zrobić w tej sytuacji?

try{ 
    personIdReturnedByDb = jdbcTemplate.queryForInt(sql, p.getEmail(), 
      p.getName(), p.getSurname(), encPw, dateSql); 
} 

catch(SQLException sa){ 


} 

Dziękuję,

+2

Nie ma żadnych zastrzeżeń SQLE; Spring opakowuje je w RuntimeException; Zapomniałem nazwy klasy root. –

+0

powinieneś to zrobić. – hvgotcodes

Odpowiedz

27

To dlatego SQLException, w kratkę wyjątek nie zostanie zgłoszony przez którąkolwiek z metod JdbcTemplate.query(...) (javadoc link). Wiosna przekłada się to do jednego z DataAccessException, który jest bardziej ogólne rodzina wyjątek środowiska wykonawczego w celu abstrakcyjnego dala konkretnej implementacji podstawowej bazy danych.

4

należy złapać wyjątek JdbcTemplate

czyli

try 
{ 
    // Your Code 
} 
catch (InvalidResultSetAccessException e) 
{ 
    throw new RuntimeException(e); 
} 
catch (DataAccessException e) 
{ 
    throw new RuntimeException(e); 
} 
Powiązane problemy