자바에서finally의 용법을 깊이 있게 분석하다

finally는 이상 처리의 일부로서try/catch 문장에만 사용할 수 있고 문장 블록을 덧붙여서 이 문장은 최종적으로 반드시 실행될 것이며 (이상이 나오든 없든) 자원을 방출해야 하는 상황에서 자주 사용된다는 것을 나타낸다.
이전에 파충류를 쓸 때 데이터베이스 연결의 빈도가 매우 높았고 때로는 데이터 처리가 좋지 않았다. sql가 오류를 보고한 후에 이상을 던졌지만 뒤에 있는 데이터베이스 연결이 끊어지지 않았다.마지막 데이터베이스 연결 수가 너무 많아서 더 이상 연결하지 못하게 했습니다.이 데이터베이스 연결을 해제하는 작업은finally로 진행할 수 있습니다.
우선finally를 사용하지 않은 코드를 보십시오. (직접 실행할 수 없습니다. 무슨 뜻인지 알아볼 수 있으면 됩니다.)

Connection conn;
Statement stmt;
try{
  conn = DriverManager.getConnection(url,userName,password);
  stmt = conn.createStatement; 
  String sql = "sql";// sql
  stmt.executeUpdate(sql);
  stmt.close();
  conn.close();
}catch(Exception e){
  e.printStackTrace();
}
프로그램이 정상적으로 실행될 때 이상 투매가 없고 문제가 없습니다.
그러나 프로그램에서 이상 (sql 오류가 발생했습니다) 을 던졌습니다.try 안의 문장은 실행되지 않았습니다.catch 안의 문장은 실행되지 않아서 데이터베이스 연결이 정상적으로 닫히지 않았습니다.데이터 양이 커지면 데이터베이스의 최대 연결 수가 상한선에 이르면 새로운 연결을 만드는 것을 허용하지 않습니다.
그리고 finally의 용도가 이제 드러날 거예요.

Connection conn = null;
Statement stmt = null;
try {
  conn = DriverManager.getConnection(url,userName,password);
  stmt = conn.createStatement; 
  String sql = "sql";// sql
  stmt.executeUpdate(sql);
  stmt.close();
  conn.close();
  } catch (SQLException e) {
    e.printStackTrace();
  }finally{
  if(stmt! = NULL){
    stmt.close();
  }
  if(conn! = NULL){
    conn.close();
  }
  }
이렇게 하면 sql 실행 오류가 발생하여 이상이 발생하더라도 마지막finally 코드에서 데이터베이스 연결을 한 번 더 판단하면 데이터베이스 연결 자원이 괜히 낭비되지 않도록 보장할 수 있다.
위에서 말한 것은 편집자가 여러분께 소개한 자바 중finally의 용법입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기