- 예외 메세지를 제대로 보여주기
- 日常茶飯事
- 2010. 7. 27. 18:54
에러메세지 앞부분에 자바 패키지명이 붙는 것을 없애자.
메세지를 보아하니 Exception 클래스를 사용한 것 같은데 Exception#toString()을 그대로 쓴거 같다.
Exception#getMessage()를 이용하도록 수정하면 되겠네.
SpringMVC를 사용했으니깐 HandlerExceptionResolver 를 사용했을거고, 관련 설정을 확인해 본다.
예외를 생성한 곳을 보니
예외가 겹친 경우에도 위와 같은 메세지가 보인다.
exception.jsp에서 실제 예외를 찾아서 보여주자.
xxx.user.service.LoginException: 사용자 정보가 존재하지 않습니다.
메세지를 보아하니 Exception 클래스를 사용한 것 같은데 Exception#toString()을 그대로 쓴거 같다.
Exception#getMessage()를 이용하도록 수정하면 되겠네.
SpringMVC를 사용했으니깐 HandlerExceptionResolver 를 사용했을거고, 관련 설정을 확인해 본다.
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.Exception">exception</prop> <!-- <prop key="xxx.common.LoginException">processException</prop> --> </props> </property> </bean>모든 예외는 exception.jsp 로 이동함.(view를 찾을 때에는 viewResolver가 사용됨)
Throwable throwable = (Throwable)request.getAttribute("javax.servlet.error.exception"); String errorMessage = throwable.getMessage(); ... var errorMessage = "<%=errorMessage%>"; alert(errorMessage);어라...제대로 처리하고 있는데...
예외를 생성한 곳을 보니
try{ LOGIN //throw LoginException("사용자 정보가 존재하지 않습니다.") }catch(Exception e){ ... throw new LoginException(e); }로그인을 처리하는 서비스에서 LoginException("사용자 정보가 존재하지 않습니다.") 을 발생시키고, 컨트롤러에서는 LoginException을 다시 생성해서 던지고 있다.
예외가 겹친 경우에도 위와 같은 메세지가 보인다.
exception.jsp에서 실제 예외를 찾아서 보여주자.
Throwable cause = throwable; while(cause.getCause() != null){ cause = cause.getCause(); } errorMessage = cause.getMessage();
Recent comment