try ~ catch 문은 예외(exception) 처리를 해줘서 원하는 결과가 아닌 예외적인 상황(에러)이 발생했을 때
이를 처리할 수 있도록 해 준다.
try ~ catch 문에서 finally 는 예외가 발생하던 하지 않던 반드시 처리해줘야 하는 부분을 기술할 때 쓰인다.
예를 들어 네트워크에서 커넥션(connection) 을 받아왔다가 닫아줘야 하는 경우 connection.close() 를
finally 문 내에 선언해 줌으로써 예외가 발생하던 하지 않던 간에 열어줬던 커넥션을 꼭 닫아주도록 한다.
* 커넥션(connection)은 네트워크 상에서 원거리에 있는 다른 프로세스와 통신을 하기 전에 먼저 나와 연결되도록 통신을 맺은것을 connection 이라고 한다.
그러므로 커넥션을 열어주고 할 일이 끝나면 커넥션을 닫아준다는 식으로 표현되는 것이다.
(아주 간단한 예로 설명하면 전화를 걸어 상대방과 연락을 했을때 전화연결이 되면 상대방 전화기와 내 전화기가 커넥션이 맺어진거라고 생각하면 되고 전화 통화가 끝나면 통화 종료를 눌러 상대방과 연결을 끊은것을 커넥션을 닫아준다라고 생각하면 된다.)
아래는 소스는 try ~ catch 문 안에 리턴을 사용하여 처리한 방식이다.
public class TestJava {
public boolean test(int i){
try {
System.out.println("i : " + i);
if(i == 1)
throw new Exception();
return true;
} catch (Exception e) {
System.out.println("exception");
return false;
} finally{
System.out.println("finally");
}
}
public static void main(String args[]) throws InterruptedException {
TestJava java = new TestJava();
java.test(0);
System.out.println("==========================================");
java.test(1);
}
}
보는 바와 같이 test(int i) 메소드 안에서 전달되는 i 의 값을 출력 시킨 후
i 의 값에 따라 1이면 익셉션을 발생시켜 주고 1이 아닐 경우 true 를 바로 리턴한다.
그리고 익셉션이 발생한 경우 catch 문에서 익셉션을 잡아서 "exception" 이라고 출력한 뒤 false 를 리턴한다.
리턴한 뒤에도 finally 문이 실행되는지 확인해보기 위해 finally 문 안에서 "finally" 가 출력되도록 하였다.
그리고 실행 해본 결과는 아래와 같다.
throw 에 상관없이 finally 문이 실행되는 것을 알 수 있다.
finally 문 무조건적으로 익셉션에 걸리든 안걸리든 마지막에는 무조건 실행이 된다.
그래서 위에 코드를 주로 DB와 커넥션을 연결하고 처리한 후 커넥션을 종료 할때 주로 많이 사용 되는 코드이다.
'JAVA' 카테고리의 다른 글
Java(자바) 형변환 하기 (0) | 2021.12.10 |
---|---|
Java 와 JavaEE의 차이점 (0) | 2021.12.10 |
JAVA 스레드 인터럽트(interrupts), 조인(join) (0) | 2021.12.10 |
java 스레드 만들고 시작하기(thread, runnable) (0) | 2021.12.09 |
세션을 이용한 카운터 (0) | 2021.12.09 |
최근댓글