2012-01-18 32 views
11

Mọi thứ đều rực rỡ cho đến khi tôi gặp nơi tôi thực sự cần bắt ngoại lệ. Khi tôi đặtspring jdbcTemplate cách bắt ngoại lệ?

jdbcTemplate.query(something...) 

trong

try{} 

khối tôi nhận được:

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

Tôi phải làm gì trong tình huống này?

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

catch(SQLException sa){ 


} 

cảm ơn,

+2

Không có bất kỳ SQLExceptions nào; Spring kết thúc chúng trong một RuntimeException; Tôi quên tên lớp gốc. –

+0

bạn nên làm cho câu trả lời đó. – hvgotcodes

Trả lời

27

Đó là bởi vì SQLException, một ngoại lệ kiểm tra, không được ném ra bởi bất kỳ JdbcTemplate.query(...) phương pháp (javadoc link). Mùa xuân dịch này với một trong những DataAccessException, đó là gia đình chung chung hơn của trường hợp ngoại lệ thời gian chạy, để tóm tắt đi bất kỳ thực hiện cơ sở dữ liệu cơ bản cụ thể.

4

Bạn nên nắm bắt được ngoại lệ JdbcTemplate

tức là

try 
{ 
    // Your Code 
} 
catch (InvalidResultSetAccessException e) 
{ 
    throw new RuntimeException(e); 
} 
catch (DataAccessException e) 
{ 
    throw new RuntimeException(e); 
} 
Các vấn đề liên quan