Language/Java

try-catch-finally의 기본형태와 return

SambaLim 2019. 2. 28. 23:47
try-catch-finally의 기본형태와 return

Java에서 프로그램 실행중 발생하는 예외처리를 하기 위해 try-catch-finally 문을 제공합니다.

try-catch-finally 의 기분형태와 return은 어떻게 사용해야할지 알아봅시다.

try-catch-finally 기본형태

try {
    // 예외 발생 가능성이 있는 코드
} catch (예외타입1 매개변수명) {
    // 예외타입1의 예외가 발생할 경우 처리 코드
} catch (예외타입2 매개변수명) {
    // 예외타입2의 예외가 발생할 경우 처리 코드
} finally {
    // 항상 수행해야 하는 코드
}

 

try-catch-finally with return

1. try안의 return문

try {
    return 5;
} catch (Exception e) {
    return 10;
} finally {
    return 15;
}

// return : 15

return 은 정상 동작으로 종료가 되었다는 의미이므로 finally 구문을 거쳐 정상 종료.

2. catch안의 return문

try {
    return 5;
} catch (Exception e) {
    return 10;
} finally {
    return 15;
}

// return : 15

마찬가지로 finally 구문을 거쳐 정상 종료.

3. finally안의 return문

try {
    return 5;
} catch (Exception e) {
    return 10;
} finally {
    return 15;
}

// return : 15

예외가 발생하였더라도 return이 정상 종료를 의미하기 때문에 try에서 발생한 Exception이 출력되지 않음.

finally는 필수가 아니여서 아래와 같은 형식으로만 출력가능

try {
    return 5;
} catch (Exception e) {
    return 10;
}

 

Return의 위치

return은 finally 이후에 나오는 것이 맞습니다.

try {
    // 리소스를 얻어내서 사용
} catch (예외타입1 매개변수명) {
    // 예외타입1의 예외가 발생할 경우 처리 코드
} catch (예외타입2 매개변수명) {
    // 예외타입2의 예외가 발생할 경우 처리 코드
} finally {
    // 리소스를 해체
}
return

이유는 메모리 누수의 원인이 될 수 있기 때문입니다.

try, catch 모두 return을 위치 시킬 수 있지만 이는 최종적으로 return을 위해 변수를 하나씩 더 할당하게 되고 이에따라 비효율적인 코드가 됩니다.

'Language > Java' 카테고리의 다른 글

Java serialVersionUID 사용이유  (0) 2019.03.09
Java String... 은 무엇인가?  (1) 2019.03.08
Java UUID 사용하기  (1) 2019.03.07
Java 오버로딩, 오버라이딩  (0) 2019.03.01
Java에서의 call by value, call by reference  (0) 2019.02.23