작성
·
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안으로 가시는 것도 좋을 것 같습니다.
감사합니다.