웹 애플리케이션에서 예외를 처리하는 방법
1. 프로그램적인 방법
Action 클래스의 execute() 메소드에서 Exception 을 클래스 밖으로 보내는 것을 삼가하고
가능하면 프로그램적인 방법으로 예외상황까지 정상적인 흐름으로 처리한다.
Action 의 실행부분을 try/catch 문으로 감싸 예외가 발생하면 ActionMessage 에 담고 예외상황을 위해 정의한 별도의 뷰로 포워드한다.
모든 액션에서 수행하는 공통된 작업은 Action 클래스를 상속받은 고유의 클래스를 정의한 후 이를 상속받는 Action 을 만드는 것이 권장할만한 방법,
여기에 예외처리로직을 구현하면 된다.
2. 선언적인 방법
프로그램적인 방법을 사용하는 경우 예외처리가 중복될 때는 선언적 예외처리를 사용할 수 있음.
* struts-config.xml 파일의 global-exeptions 요소를 통해 모듈 전체에서 공통으로 사용할 Exception 에 대한 설정을 정의.
<global-exceptions>
<exception
type="kr.co.kame.ssg.hr.service.NoSuchEmployeeException"
key="exception.no.such.exception"
scope="request"
path="/common/SimpleMessages.jsp"
/>
</global-exceptions> |
모듈 내에서 정의된 type 의 exception 이 발생하면,
스트럿츠의 Exception Handler 가 리소스번들에서 key 값으로 정의된 메시지를 담은 ActionMessage 를 생성하고 요청 스코프에 저장한 후
path 로 정의된 view(/common/SimpleMessages.jsp)를 호출한다.
특정 Action 에만 유효한 Exception 의 정의도 가능하다.
* Action 에서 예외 발생 -> RequestProcessor 가 등록된 Exception
Handler 호출 -> Exception Handler 가 예외 처리 후 리턴하는 ActionForward 로 포워드.
|