2012-01-18 72 views
11

一切都很棒,直到我遇到我真的需要抓住異常的地方。當我把spring jdbcTemplate如何捕獲異常?

jdbcTemplate.query(something...) 

try{} 

塊,我得到:

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

我怎麼在這種情況下怎麼辦?

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

catch(SQLException sa){ 


} 

謝謝你,

+2

沒有任何SQLExceptions; Spring將它們包裝在RuntimeException中;我忘記了根類名。 – 2012-01-18 20:00:27

+0

你應該做出答案。 – hvgotcodes 2012-01-18 20:04:18

回答

27

這是因爲SQLException,檢查異常,不被任何JdbcTemplate.query(...)方法拋出(javadoc link)春將這種對DataAccessException之一,這是比較通用的家庭運行時異常,以抽象掉任何特定的底層數據庫的實現。

4

你應該抓住的JdbcTemplate例外

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