예외 메세지를 제대로 보여주기

에러메세지 앞부분에 자바 패키지명이 붙는 것을 없애자.
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();