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 |