상황 1) 

try{ System.out.println(1); try{ System.out.println(0/0); System.out.println(2); }catch(Exception e){ System.out.println(3); }finally{ System.out.println(4); } System.out.println(8); //실행 된다..! (밑에 상황2에서는 실행이안됨..) }catch(Exception e){ System.out.println(5); }finally{ System.out.println(6); } System.out.println(7); 결과> 1 3 4 8 6 7

상황 2)

public static int a(){ try{ System.out.println(1); try{ System.out.println(0/0); System.out.println(2); }catch(Exception e){ System.out.println(3); return 0; }finally{ System.out.println(4); //return 1; } System.out.println(8); //이거 실행안된다...! 에러는 안남.. System.out.println(0/0); //err상황 -> 5가 출력됨 ... -- 다시해보니깐 안됨 }catch(Exception e){ System.out.println(5); return 2; }finally{ System.out.println(6); } System.out.println(7); return 3; } 결과 >> 1 3 4 6 >>return: 0 >>첫번째 finallyreturn 1이 있으면 1return 된다 >>return하는 finally중 마지막의 return 값이 리턴됨 >>try부분을 모두 처리후에 리턴된다. (try문의 밖에 있는 것은 실행되지 않는다..) >>catch부분에서 처음만난 return 값으로 리턴한다.

상황 3)

public static int a(){ try{ System.out.println(1); try{ System.out.println(0/0); System.out.println(2); }catch(Exception e){ System.out.println(3); return 0; }finally{ System.out.println(4); return 1; } }catch(Exception e){ System.out.println(5); return 2; }finally{ System.out.println(6); return 3; } } 결과> 1 3 4 6 >>return 되는 값 3

상황 4)

public static int a(){ try{ System.out.println(1); try{ System.out.println(0/0); System.out.println(2); }catch(Exception e){ System.out.println(3); return 0; }finally{ System.out.println(4); return 1; } System.out.println(8); //err }catch(Exception e){ System.out.println(5); return 2; }finally{ System.out.println(6); return 3; } System.out.println(7); //err return 4; } >> 컴파일에러..?런타임에러..? //실행되는데 7출력부분에서 에러.. >> unreachable code라 에러가난다.


'JAVA > JAVA' 카테고리의 다른 글

[JVAV] BigInteger 클래스  (0) 2018.07.09
[JAVA] 2진수, 8진수, 16진수  (0) 2018.07.09
[JAVA] Modifiers, Contructor  (0) 2017.09.18
[JAVA] JAVA 특징  (0) 2017.09.18
[JAVA] String / StringBuffer / StringBuilder  (0) 2017.09.03

+ Recent posts