마지막으로, 예외 처리의 일부로, 시도/캐치 문에만 사용될 수 있으며, 진술 블록과 함께 제공되며,이 명령문은 결국 예외가 발생하는지 여부에 관계없이 결국 실행되며 자원이 릴리스되어야 할 때 종종 사용됩니다.
크롤러를 작성할 때 데이터베이스 연결 빈도가 매우 높았습니다. 때로는 데이터가 잘 처리되지 않았습니다. SQL 오류가보고 된 후 예외가 발생했지만 후속 데이터베이스 연결은 연결되지 않았습니다. 이로 인해 데이터베이스 연결 수가 너무 커서 더 이상 연결할 수 없게되었습니다 (개인 라이브러리이기 때문에 직접 다시 시작했습니다). 데이터베이스 연결을 출시하는이 작동은 마지막으로 수행 될 수 있습니다.
먼저, 최종적으로는 그렇지 않은 코드를 살펴 보겠습니다 (직접 실행할 수없고 그 의미를 이해하십시오).
Connection Conn; Statement stmt; try {conn = drivermanager.getConnection (url, username, password); stmt = conn.createstatement; 문자열 sql = "sql"; // sql stmt.executeupdate (sql); stmt.close (); conn.close ();} catch (예외 e) {e.printstacktrace ();}프로그램이 정상적으로 실행될 때 예외는 발생하지 않으며 문제가 없습니다.
그러나 프로그램에 예외가 발생하면 (SQL 오류가 발생) 시도의 명령문이 실행되지 않고 Catch의 명령문이 직접 실행되므로 데이터베이스 연결이 정상적으로 닫히지 않습니다. 데이터 양이 커지면 데이터베이스의 최대 연결 수가 상한에 도달하고 새로운 연결이 더 이상 허용되지 않습니다.
그러면 이제 마침내 유용성을 반영 할 수 있습니다
Connection Conn = null; stmt = null; try {conn = drivermanager.getConnection (url, username, password); stmt = conn.createstatement; 문자열 sql = "sql"; // sql stmt.executeupdate (sql); stmt.close (); conn.close (); } catch (sqlexception e) {e.printstacktrace (); } 마침내 {if (stmt! = null) {stmt.close (); } if (conn! = null) {conn.close (); }} 이러한 방식으로 SQL이 오류를 실행하고 예외를 던지고 최종 코드에서 데이터베이스 연결에 대해 다른 판단을 내리더라도 데이터베이스 연결 리소스가 이유없이 낭비되지 않도록 할 수 있습니다.
위의 것은 편집자가 당신에게 소개 한 Java에서 마지막으로 사용하는 것입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!