1

나는 아주 단순한 MVC 프레임 워크 인 Bear Bibeault's Front Man을 사용하고 있는데 익숙하지 않은 사람들은 Spring MVC와 개념이 비슷하다. 내가 겪고있는 문제 중 하나는 예외를 올바르게 처리하는 방법입니다. 나는 현재이 같은 일을하고Java MVC 웹 응용 프로그램에서 오류를 처리/기록하는 방법은 무엇입니까?

try { 
    //do something 
}catch (Exception ex) { 
    logger.error("Logging error", ex); 
    Map model = new HashMap(); 
    model.put("error", ex.getLocalizedMessage()); 
    cc.setScopedVariable("model", model); 
    cc.forwardToView(ERROR_VIEW); 
} 

는 기본적으로 나는 오류보기 페이지로 앞으로 다음 예외를 기록합니다.

그러나이 작업은 올바른 방법이 아니라고 생각합니다. DRY가 아닌 많은 상용구 코드가 생성됩니다.

웹 응용 프로그램에서 예외를 처리/로그하는 더 좋은 방법은 무엇입니까?

답변

5

error JSP file 안에 모든 로깅을 수행 할 수 있습니다.

web.xml 파일에 추가하십시오. 당신의 JSP 파일에서

<error-page> 
<exception-type>java.lang.Throwable</exception-type> 
<location>/error.jsp</location> 
</error-page> 

<%@page isErrorPage="true" %> 

는 그런 다음 <% %> 내부에 로깅을 배치하고 동시에 오류를 표시 할 수 있습니다 추가 할 수 있습니다. 모든 로깅 로직이 한 곳에 있으므로 코드가보다 깨끗 해지기 시작할 것입니다.


JSP 파일에서 스크립틀릿을 사용하는 대신 위치를 서블릿으로 지정할 수 있습니다. 서블릿은 모든 처리를 처리 한 다음 JSP 페이지로 전달할 수 있습니다.

이 기술을 다양한 예외에 사용할 수도 있으므로 예외를 다르게 처리 할 수 ​​있습니다.

+0

오류 JSP 페이지에서 scriplets를 사용해야합니까? 나는 JSP의 코드에서 벗어나려고 노력하고있다. –

+0

뷰의 JSP에는 오류 처리 코드가 없어야합니다. 오류는 해당 세그먼트에서 처리되어야하며 사용자에게 친숙한 메시지가 출력되어야합니다. – doomspork

+1

JSP 페이지 대신 서블릿을 사용할 수도 있습니다. – scheibk

1

예외 유형이 다양하기 때문에 먼저 사용자에게 표시 할 방법을 식별해야합니다. 컨텍스트없이 오류를 표시 할 때 염두에 두어야 할 모든 오류에 대해 오류를 표시하는 페이지로 전달하면 일부 최종 사용자에게 혼동을 줄 수 있습니다.

당신이 처리 할 수있는 한 가지 방법은 모든 중대한 오류를 기록하고 웹 사이트에서 사용자가 액세스하고 검토 할 수있는 위치를 지정하는 것입니다. (나는 우리가 비슷한 것을 가지고있는 프로젝트에서 작업했다. 사용자는 애플리케이션이 진행되는 것을 막지 못하는 경고와 오류를 검토 할 수있다.) 오류가 발생한 페이지로 리턴하여 채울 수있다. 거기에 오류 메시지가 있습니다. AJAX/Comet은 오류가 발생한 페이지에서 벗어나지 않고 실시간 오류를 사용자에게 표시하는 데 사용할 수 있습니다.

관련 문제