TraceHandler에 관련하여 문의드립니다.
- 작성자 :
- 곽*
- 작성일 :
- 2013-04-05 16:53:48
- 조회수 :
- 1,303
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
현재 예외처리를 하고 있는데..
그 중 고객의 요구사항이
에러가 발생할 경우 오류화면을 띄우는 것이 아니라 서비스코드(응답코드)를 생성해서 각 오류에 해당하는 서비스코드를 화면으로 던져 달라고 합니다.
그래서 찾다보니 TraceHandler implements 받아 후처리하는 로직을 짤 수 있습니다.
그런데 에러에 대한 메세지만 받을 수 있고 Exception 객체는 받을 수 없는데 이걸 받는 방법이 있을까요?
답변 부탁드립니다.
그 중 고객의 요구사항이
에러가 발생할 경우 오류화면을 띄우는 것이 아니라 서비스코드(응답코드)를 생성해서 각 오류에 해당하는 서비스코드를 화면으로 던져 달라고 합니다.
그래서 찾다보니 TraceHandler implements 받아 후처리하는 로직을 짤 수 있습니다.
그런데 에러에 대한 메세지만 받을 수 있고 Exception 객체는 받을 수 없는데 이걸 받는 방법이 있을까요?
답변 부탁드립니다.
A
안녕하세요.. 곽종님..
TraceHandler의 경우는 Exception에 대한 파라미터 정의가 되어 있지 않기 때문에 Exception에 대한 정보를 얻으실 수 없습니다.
Exception에 대한 정보가 필요하신 경우라면 LeaveaTrace가 아닌 AOP 방식으로 정의(context-aspect.xml 참조)정의된 ExceptionHandler를 사용하셔야 할 것 같습니다.
단, 이 경우는 화면에 어떤 정보를 제공하기 위한 용도가 아니기 때문에 원하시는 형태는 불가능합니다.
원하시는 형태의 경우는 Controller 상에 특정 Exception(Service 부분에서 일반적으로 발생하는 오류가 아닌 메시지 전달용 Exception 정의)에 대하여 try catch 를 통해 DispatcherServlet까지 전달하기 않고.. Exception 자체를 모델에 넘기셔서 해당 화면에서 처리하시면 되실 것 같습니다. (Exception 정보가 모델에 있는 경우 alert 처리 등)
이 방식은 around 유형의 AOP를 통해 모든 controller가 아닌 방식으로도 가능할 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
TraceHandler의 경우는 Exception에 대한 파라미터 정의가 되어 있지 않기 때문에 Exception에 대한 정보를 얻으실 수 없습니다.
Exception에 대한 정보가 필요하신 경우라면 LeaveaTrace가 아닌 AOP 방식으로 정의(context-aspect.xml 참조)정의된 ExceptionHandler를 사용하셔야 할 것 같습니다.
단, 이 경우는 화면에 어떤 정보를 제공하기 위한 용도가 아니기 때문에 원하시는 형태는 불가능합니다.
원하시는 형태의 경우는 Controller 상에 특정 Exception(Service 부분에서 일반적으로 발생하는 오류가 아닌 메시지 전달용 Exception 정의)에 대하여 try catch 를 통해 DispatcherServlet까지 전달하기 않고.. Exception 자체를 모델에 넘기셔서 해당 화면에서 처리하시면 되실 것 같습니다. (Exception 정보가 모델에 있는 경우 alert 처리 등)
이 방식은 around 유형의 AOP를 통해 모든 controller가 아닌 방식으로도 가능할 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.