상황 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
>>첫번째 finally에 return 1이 있으면 1이 return 된다
>>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 |