본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA
Development/JAVA

[디비 파기 | PMD] ReturnFromFinallyBlock외 8건

by 마즈다 2016. 2. 28.
반응형

ReturnFromFinallyBlock


Avoid returning from a finally block, this can discard exceptions.

finally 블록에서 리턴하는 것을 자제하라. exception 처리가 무시될 수 있다.


샘플 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Bar {
 
    public String foo() {
 
        try {
 
            throw new Exception( "My Exception" );
 
        } catch (Exception e) {
 
            throw e;
 
        } finally {
 
            return "A. O. K."; // 이 곳에서 리턴 하는 경우 catch문이 무시되고 정상인 것처럼 리턴
 
       }                       // 처리된다.
 
    }
 
}


다들 아시다시피 finally블럭 내에 있는 문장은 앞에 있는 try블럭이나 catch블럭에서 공통적으로 처리해주어야 할

부분을 처리하는 블럭이다. 주로 네트워크나 DB 커넥션 연결 하고 정상적인 프로세스 처리 후 혹은 예외가

발생하여 exception이 처리된 후 커넥션을 close하는 등의 용도로 많이 사용된다.

 

문제는 finally블럭이 있는 경우 try블럭이나 catch블럭에 return문이 있는 경우에도 finally블럭 내의 코드가

최종적으로 실행된다는 것이다.

 

위 샘플코드의 경우 try블럭과 catch블럭에서 모두 예외를 던지고 있지만 최종적으로는 “A.O.K”라는 문자열이

리턴되게 되고 이 함수를 호출한 곳에서는 정상적인 문자열 값을 받았으므로 예외에 대한 정보를 확인할 수

없게 되는 것이다.

 

따라서 가급적이면 finally블럭에는 return문을 넣지 않는 것이 좋다.

반응형