작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
402
·
수정됨
0
public void aaa() throws SQLException {
String sql = "delete from member where member_id =?";
String memberId = "!";
try {
Connection con = getConnection();
PreparedStatement pstmt = null;
pstmt = con.prepareStatement(sql);
} catch (Exception e) {
}
}
이렇게 try 문 안에서 한번에 받지 않고
Connection con = null;
PreparedStatement pstmt = null;
이렇게 null로 외부에서 선언을 하는 것은 finally 문 안에 close 메서드에 파라미터로 넘겨주기 위함이 맞나요 ?
답변 2
4
맞아요! 코드에서 Connection
과 PreparedStatement
를 외부에서 null로 선언하고 있는 이유는, 주로 다음과 같은 상황 때문이에요.
try
블록 안에서 발생하는 예외를 처리하면서, catch
블록에서도 이 변수들에 접근할 수 있어요.
finally
블록에서 이 변수들을 사용해 자원을 안전하게 닫아주기 위해서예요. finally
블록은 예외가 발생하든 안 하든 실행되기 때문에, 이렇게 하면 코드가 깔끔하게 정리돼요.
finally {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
// 예외 처리
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
// 예외 처리
}
}
}
이렇게 하면 코드가 더 안전하고 깔끔해져요!
인프런 대표님께서 직접 답글을 달아주시다니 ㅋㅋㅋ 감사합니다.