공통 컴포넌트 예외 처리 방안
- 작성자 :
- 이*하
- 작성일 :
- 2011-08-04 20:35:22
- 조회수 :
- 2,497
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요.
현재 공통 컴포넌트를 사용해서 사이트를 개발중인데요
예외 처리를 하려 합니다.
일단 가이드를 보고서는 예외 처리를 어떻게 잡아야할지 감이 잘 오지
않네요.
예외 처리를 최종적으로 EgovComExcepHndlr.java 에서 예외 처리를
끝내는 것으로 가이드가 되어있던데 실제 catch부분에는e.printStackTrace();
로 처리가 끝나있더군요. 코드 인스펙션을 돌리면 이런 것은 대개 규칙 위반으로
걸리는데 보통 어떤식으로 처리하는게 좋을지요.
전체적으로 화면에서부터 DAO까지 예외 처리를 소스상에 어떻게 처리를 해야할지
가능하다면 예제를 통해서 알려주셨으면 합니다.
검색 사이트에서 검색을 해보면 ExceptionResolver를 이용도 하던데
ExceptionResolver의 사용은 컨트롤러까지 예외처리를 받아서 화면에 예외사항을
에러페이지에서 보여지기 위해서 있는건지....
너무 막연히 질문해서 답변이 어려울 듯하지만 가능한데까지 부탁드리겠습니다.
현재 공통 컴포넌트를 사용해서 사이트를 개발중인데요
예외 처리를 하려 합니다.
일단 가이드를 보고서는 예외 처리를 어떻게 잡아야할지 감이 잘 오지
않네요.
예외 처리를 최종적으로 EgovComExcepHndlr.java 에서 예외 처리를
끝내는 것으로 가이드가 되어있던데 실제 catch부분에는e.printStackTrace();
로 처리가 끝나있더군요. 코드 인스펙션을 돌리면 이런 것은 대개 규칙 위반으로
걸리는데 보통 어떤식으로 처리하는게 좋을지요.
전체적으로 화면에서부터 DAO까지 예외 처리를 소스상에 어떻게 처리를 해야할지
가능하다면 예제를 통해서 알려주셨으면 합니다.
검색 사이트에서 검색을 해보면 ExceptionResolver를 이용도 하던데
ExceptionResolver의 사용은 컨트롤러까지 예외처리를 받아서 화면에 예외사항을
에러페이지에서 보여지기 위해서 있는건지....
너무 막연히 질문해서 답변이 어려울 듯하지만 가능한데까지 부탁드리겠습니다.
A
안녕하세요.. 이동하님..
EgovComExcepHndlr.java에서 실제 오류에 대한 정보 처리는 try .. catch 부분이 아니라
log.error(packageName, ex); 부분입니다.
즉.. AOP 설정(context-aspect.xml)에 의해 최종적으로 발생된 Exception 정보가 위 클래스의 occur로 전달되며 전달된 Exception 정보를 활용하시면 됩니다.
EgovComExcepHndlr의 현재 경우는 .. 단순희 logger의 error를 통해 정보를 처리하고 있는 것입니다.
코드 인스펙션 부분은.. e.printStackTrace() 부분이 문제가 되는 것이도..
이 경우는 try.. catch.. 부분을 제거해 주시면 됩니다.
또는 e.printStackTrace()를 다음과 같이 log.error("Exception", ex)로 변경하셔도 됩니다.
(try .. catch로 묶여 있는 이유는 mailSender.send(..)을 사용할 때에 throw되는 exception을 처리하기 위해서 이고... mailSender.send(..)가 주석처리 되어 있기 때문에.. try.. catch..도 필요 없어 졌습니다.)
예외처리에 대한 전체적인 내용은 다음 가이드를 참조하시면 도움이 되실 것 같습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:bsl:exception_handling
이와는 별도로 발생된 Exception이 DispatchServlet까지 throw되면.. ExceptionResolver에 의해 특정 화면으로 넘어가도록 되어 있습니다.
(발생된 Exception에 따라 view명을 리턴하도록 되어 있음)
그럼.. 즐거운 하루되십시오.
감사합니다.
EgovComExcepHndlr.java에서 실제 오류에 대한 정보 처리는 try .. catch 부분이 아니라
log.error(packageName, ex); 부분입니다.
즉.. AOP 설정(context-aspect.xml)에 의해 최종적으로 발생된 Exception 정보가 위 클래스의 occur로 전달되며 전달된 Exception 정보를 활용하시면 됩니다.
EgovComExcepHndlr의 현재 경우는 .. 단순희 logger의 error를 통해 정보를 처리하고 있는 것입니다.
코드 인스펙션 부분은.. e.printStackTrace() 부분이 문제가 되는 것이도..
이 경우는 try.. catch.. 부분을 제거해 주시면 됩니다.
또는 e.printStackTrace()를 다음과 같이 log.error("Exception", ex)로 변경하셔도 됩니다.
(try .. catch로 묶여 있는 이유는 mailSender.send(..)을 사용할 때에 throw되는 exception을 처리하기 위해서 이고... mailSender.send(..)가 주석처리 되어 있기 때문에.. try.. catch..도 필요 없어 졌습니다.)
예외처리에 대한 전체적인 내용은 다음 가이드를 참조하시면 도움이 되실 것 같습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:bsl:exception_handling
이와는 별도로 발생된 Exception이 DispatchServlet까지 throw되면.. ExceptionResolver에 의해 특정 화면으로 넘어가도록 되어 있습니다.
(발생된 Exception에 따라 view명을 리턴하도록 되어 있음)
그럼.. 즐거운 하루되십시오.
감사합니다.