강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

In프런님의 프로필 이미지
In프런

작성한 질문수

JSP 연관문의

작성

·

238

0

안녕하세요?

제가 다음과 같은 구조로 개발을 진행하려고 하는데 여러 분들의 의견이 필요합니다.

 

1안)

try {

// DB 연결

// 기타 로직 ..

}

 

catch (Exception e) {

try

{ // DB rollback }

catch(Exception e) {

// 로그 기록 등 로직 1

// if (로그 기록 등 로직 1에 대한 예외발생시 return )

 

// 로그 기록 등 로직 2

// if (로그 기록 등 로직 2에 대한 예외발생시 return )

}

}

fianlly

{

//DB 연결 종료

}

 

2)

 

try {

// DB 연결

// 기타 로직 ..

}

 

catch (Exception e) {

try

{ // DB rollback }

catch(Exception e) {

// 로그 기록 등 로직 1을 java 함수를 사용해서 해당 함수(AA.B) 에서 try, catch 처리.

// 로그 기록 등 로직 2을 java 함수를 사용해서 해당 함수(CC.D)에서 try, catch 처리.

// return;

}

}

fianlly

{

//DB 연결 종료

}

 

저는 2안으로 하려고 합니다.

 

2안을 할 경우에 문제가 될 수 있는 사항은 로직 1을 함수(AA.B)호출을 해서 그 함수에서 try, catch를 하더라도

예외가 발생했을 때 그 자바 함수(AA.B)에서 return을 해도 해당 자바함수(AA.B)를 호출한 jsp가 return으로 끝나는 것은 아니기 때문에 어쩔 수 없이 CC.D도 실행되고 그 뒤에 return됩니다.

 

이런 경우에 문제가 있을지요?

 

1안으로 하면 코드가 3줄 정도 길어지는데 이런 구문이 반복되다 보면 소스가 지저분해집니다.

 

그래서 2안으로 하려고 합니다.

 

고수님들, 의견 주시면 감사하겠습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

2안으로 진행하실 경우, AA.B 함수와 CC.D 함수가 모두 실행될 수 있는 가능성이 있으므로 예외 처리를 꼼꼼하게 해주셔야 합니다. 만약 AA.B 함수에서 예외가 발생하더라도 그 예외를 처리해주지 않으면 CC.D 함수가 실행될 가능성이 있기 때문입니다.

따라서, AA.B 함수와 CC.D 함수에서 예외 처리를 모두 해주시고, 그 예외에 대한 로그 기록 등도 2안에서 직접 처리해주셔야 합니다. 만약 이러한 예외 처리를 까다롭게 생각하신다면 1안으로 가시는 것도 좋을 것 같습니다.

감사합니다.

In프런님의 프로필 이미지
In프런

작성한 질문수

질문하기