Exception 발생시 SQLException에 대한 메시징 처리 문의드립니다.
- 작성자 :
- 박*현
- 작성일 :
- 2013-05-07 19:57:23
- 조회수 :
- 1,399
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
안녕하세요? 매번 노고가 많으십니다.
제가 전자정부프레임웍에 사용자 Exception처리를 구성중인데요.
위키문서(Exception Handling)를 통해서 context-aspect.xml 과 customizableHandler.java를 작성했습니다.
TEST를 해보니 일반적인 Log처리는 잘됩니다.
그런데 SqlException의 .getErrorCode()를 통해 오라클 에러코드별로 메시징 처리를 하고자 하는데요.. handler class에서 어떤 방식으로 처리를 해야할지 모르겠습니다. 처리방법좀 부탁드립니다.. 감사합니다.
customizableHandler.java
public class CustomizableHandler implements ExceptionHandler {
protected Log log = LogFactory.getLog(this.getClass());
public void occur(Exception ex, String packageName){
log.debug(" [Exception] CustomHandler run...................");
try{
log.debug(" [Exception] CustomHandler 실행......");
}catch(Exception e2){
e2.printStackTrace();
}finally {
log.debug(" [Exception] CustomHandler 종료......");
}
}
}
제가 전자정부프레임웍에 사용자 Exception처리를 구성중인데요.
위키문서(Exception Handling)를 통해서 context-aspect.xml 과 customizableHandler.java를 작성했습니다.
TEST를 해보니 일반적인 Log처리는 잘됩니다.
그런데 SqlException의 .getErrorCode()를 통해 오라클 에러코드별로 메시징 처리를 하고자 하는데요.. handler class에서 어떤 방식으로 처리를 해야할지 모르겠습니다. 처리방법좀 부탁드립니다.. 감사합니다.
customizableHandler.java
public class CustomizableHandler implements ExceptionHandler {
protected Log log = LogFactory.getLog(this.getClass());
public void occur(Exception ex, String packageName){
log.debug(" [Exception] CustomHandler run...................");
try{
log.debug(" [Exception] CustomHandler 실행......");
}catch(Exception e2){
e2.printStackTrace();
}finally {
log.debug(" [Exception] CustomHandler 종료......");
}
}
}
A
안녕하세요. 박우현님.
구체적인 에러코드 별로 메세지를 처리하는 것은 로그 상에 기록하는 것과 화면 상에 표시해 주는 것 등의 실제 처리 방식에 따라 상이 하게 처리될 것 같습니다.
단순 로그 상에 메시지 처리시라면 위 Handler에서 내부적으로 코드에 따라 메시지를 매핑 (property 파일을 통해 메시지화 등)하시면 되실 것 같습니다.
문제는 화면 상에 표시를 통해 사용자에게 전달하는 방법인데 이 방식은 AOP 방식으로는 처리가 어렵습니다.
이 경우는 서비스 단에서 다음과 같이 표준프레임워크의 AbstractServiceImpl의 processException() 메소드를 활용하시면 되실 것 같습니다.
( 발생된 SQL Exception에 대한 에러 코드 자체를 property 파일에 매핑해 놓으시구요..
ex)
@Service("NotificationService")
public class NotificationServiceImpl extends AbstractServiceImpl implements NotificationService {
...
if (resultVO == null) {
throw processException("info.nodata.msg"); // Exception 메시지 처리 시..
}
그럼, 즐거운 하루되십시오.
감사합니다.
구체적인 에러코드 별로 메세지를 처리하는 것은 로그 상에 기록하는 것과 화면 상에 표시해 주는 것 등의 실제 처리 방식에 따라 상이 하게 처리될 것 같습니다.
단순 로그 상에 메시지 처리시라면 위 Handler에서 내부적으로 코드에 따라 메시지를 매핑 (property 파일을 통해 메시지화 등)하시면 되실 것 같습니다.
문제는 화면 상에 표시를 통해 사용자에게 전달하는 방법인데 이 방식은 AOP 방식으로는 처리가 어렵습니다.
이 경우는 서비스 단에서 다음과 같이 표준프레임워크의 AbstractServiceImpl의 processException() 메소드를 활용하시면 되실 것 같습니다.
( 발생된 SQL Exception에 대한 에러 코드 자체를 property 파일에 매핑해 놓으시구요..
ex)
@Service("NotificationService")
public class NotificationServiceImpl extends AbstractServiceImpl implements NotificationService {
...
if (resultVO == null) {
throw processException("info.nodata.msg"); // Exception 메시지 처리 시..
}
그럼, 즐거운 하루되십시오.
감사합니다.