예외처리에 대해 궁금한 점이 있습니다.
- 작성자 :
- 이*규
- 작성일 :
- 2013-10-01 16:11:15
- 조회수 :
- 997
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
글을 작성하다 개인적인 일로 자리를 비웠더니 글이 날아가버리네요 ㅜ_ㅜ
샘플예제를 통해 전자정부 프레임워크를 숙달하던 중 예외처리의 흐름에 대해 궁금한 점이 생겨 문의드립니다.
샘플예제에서는 dispatcher-servlet.xml에서 정의한 Bean인 SimpleMappingExceptionResolver를 통해 네 가지 예외(DataAccessException, TransactionException, EgovBizException, AccessDeniedException)이 발생시 특정 jsp페이지로 이동하도록 되어있는데요.
이 경우 ExceptionHandler를 구현한 EgovSampleExcepHndlr 등의 핸들러 클래스는 무엇을 위해 존재하는지 궁금합니다.
상기 기술지원 페이지의 서두에서 언급하며, 또 SimpleMappingExceptionResolver에서 담당하는 예외 네 가지를 제외한 나머지 예외들이 구현한 핸들러 클래스들에 속하는 것인가요? 만약 그렇다면 에러 발생시 핸들러 클래스로의 .transfer() 호출을 위한 AOP Pointcut 적용에 앞서 SimpleMappingExceptionResolver에 등록된 예외인지 검사하는 로직이 먼저 수행되는 것인지요.
시험삼아 SQLException을 발생시키고 핸들러 클래스에 콘솔코드를 남겨봤지만 콘솔창엔 핸들러 클래스를 거쳐갔다는 메시지 없이 심플..에서 할당한 jsp페이지로 이동해버리네요.
덧붙여 언급한 전자정부 프레임워크 기술지원 페이지에서 Exception과 Trace에 대해 다루고있는데요. 둘의 차이점에 대해 간략히 설명 좀 부탁드리겠습니다.
현업에 대해 배우는 초보개발자라 기초적인 내용에 대한 질문뿐이네요.^^
요약하자면,
1) ExceptionHanlder인터페이스를 구현한 핸들러 클래스는 왜 쓰는가?
2) 정의된 핸들러 클래스보다 SimpleMappingExceptionResoler가 우선되는가?
3) 예외발생 > ExceptionResolver > Pointcut > 핸들러클래스의 흐름이 맞는가?
입니다.
답변 부탁드리겠습니다!ㅎㅎ
샘플예제를 통해 전자정부 프레임워크를 숙달하던 중 예외처리의 흐름에 대해 궁금한 점이 생겨 문의드립니다.
샘플예제에서는 dispatcher-servlet.xml에서 정의한 Bean인 SimpleMappingExceptionResolver를 통해 네 가지 예외(DataAccessException, TransactionException, EgovBizException, AccessDeniedException)이 발생시 특정 jsp페이지로 이동하도록 되어있는데요.
이 경우 ExceptionHandler를 구현한 EgovSampleExcepHndlr 등의 핸들러 클래스는 무엇을 위해 존재하는지 궁금합니다.
상기 기술지원 페이지의 서두에서 언급하며, 또 SimpleMappingExceptionResolver에서 담당하는 예외 네 가지를 제외한 나머지 예외들이 구현한 핸들러 클래스들에 속하는 것인가요? 만약 그렇다면 에러 발생시 핸들러 클래스로의 .transfer() 호출을 위한 AOP Pointcut 적용에 앞서 SimpleMappingExceptionResolver에 등록된 예외인지 검사하는 로직이 먼저 수행되는 것인지요.
시험삼아 SQLException을 발생시키고 핸들러 클래스에 콘솔코드를 남겨봤지만 콘솔창엔 핸들러 클래스를 거쳐갔다는 메시지 없이 심플..에서 할당한 jsp페이지로 이동해버리네요.
덧붙여 언급한 전자정부 프레임워크 기술지원 페이지에서 Exception과 Trace에 대해 다루고있는데요. 둘의 차이점에 대해 간략히 설명 좀 부탁드리겠습니다.
현업에 대해 배우는 초보개발자라 기초적인 내용에 대한 질문뿐이네요.^^
요약하자면,
1) ExceptionHanlder인터페이스를 구현한 핸들러 클래스는 왜 쓰는가?
2) 정의된 핸들러 클래스보다 SimpleMappingExceptionResoler가 우선되는가?
3) 예외발생 > ExceptionResolver > Pointcut > 핸들러클래스의 흐름이 맞는가?
입니다.
답변 부탁드리겠습니다!ㅎㅎ
A
안녕하세요 프레임워크 센터입니다.
1) 스프링에서 정의한 다양한 구현체들을 확장해서 추가기능을(자세한로그남기기 등)을 구현할 수 있기 때문에 확장해서 사용하곤 합니다.
2) SimpleMappingExceptionResoler는 에러메세지를 잡는게 아니라 에러메세지 발생 후 뷰 단에서 다른 페이지로 매핑시키는 클래스 입니다.
<!--
- This bean resolves specific types of exceptions to corresponding logical
- view names for error views. The default behaviour of DispatcherServlet
- is to propagate all exceptions to the servlet container: this will happen
- here with all other types of exceptions.
-->
위 부분을 참고하시기 바랍니다.
3) 순서를 정하자면 예외발생 > porintcut > exceptionHndlr > SimpleMappingExceptionResoler 가 되겠습니다.
참고로 말씀드리자면 execptionHndlr는 서비스단의 에러처리를 담당하는 부분이고 SimpleMappingExceptionResoler는 뷰단의 영역입니다. 따라서 굳이 순서를 따지자면 언급한 바와 같지만 실제로는 따로따로 동작한다고 보시면 됩니다.
수고하세요.
1) 스프링에서 정의한 다양한 구현체들을 확장해서 추가기능을(자세한로그남기기 등)을 구현할 수 있기 때문에 확장해서 사용하곤 합니다.
2) SimpleMappingExceptionResoler는 에러메세지를 잡는게 아니라 에러메세지 발생 후 뷰 단에서 다른 페이지로 매핑시키는 클래스 입니다.
<!--
- This bean resolves specific types of exceptions to corresponding logical
- view names for error views. The default behaviour of DispatcherServlet
- is to propagate all exceptions to the servlet container: this will happen
- here with all other types of exceptions.
-->
위 부분을 참고하시기 바랍니다.
3) 순서를 정하자면 예외발생 > porintcut > exceptionHndlr > SimpleMappingExceptionResoler 가 되겠습니다.
참고로 말씀드리자면 execptionHndlr는 서비스단의 에러처리를 담당하는 부분이고 SimpleMappingExceptionResoler는 뷰단의 영역입니다. 따라서 굳이 순서를 따지자면 언급한 바와 같지만 실제로는 따로따로 동작한다고 보시면 됩니다.
수고하세요.