finally 블럭이 실행되지 않는 경우는 finally 블럭이 실행되기 전에 System.exit(0)명령이 실행되어 JVM이 작동하지 않을 때이며 그 외의 경우에는 예외발생과 상관없이 항상 실행된다. 즉, finally블럭전에 return문장이 있더라도 결국 finally블럭까지는 실행되는 것이다.
public class TryCatch {
public static void main(String[] args){
try{
System.out.println("Try");
return; // 여기서 멈추지 않고 finally 블럭까지는 실행된다
}catch(Exception e){
System.out.println("Catch");
}finally{
System.out.println("Finally");
}
System.out.println("End");
}
}
public class TryCatch02 {
public static void main(String[] args){
try{
System.out.println("Try");
throw new Exception("예외발생");
}catch(Exception e){
System.out.println("Catch");
return; // 여기서 멈추지 않고 finally 블럭까지는 실행된다
}finally{
System.out.println("Finally");
}
}
}