2010-05-20 4 views
8

컨트롤러에서 응용 프로그램에서 예외를 처리하는 메서드를 처리하고 있습니다. 그래서 저는이 방법을 가지고 있습니다.@ExceptionHandler가 throw 된 예외를 처리하지 않습니다.

@Controller 
public class ExceptionController { 

    @RequestMapping(value="/error") 
    @ExceptionHandler(value={Exception.class, NullPointerException.class}) 
    public String showError(Exception e, Model model){ 
     return "tiles:error"; 
    } 
} 

그것이 내가 다른 방법 컨트롤러에서 다른 방법으로는 NullPointerException를 던져 작동하는지 그리고 I를 시도 :

boolean a = true; 
if(a){ 
    throw new NullPointerException(); 
} 

예외는 JSP에서 인쇄 던진 후,하지만 그렇지 않은 내 showError() 메소드를 던지십시오 (중단 점을 설정 했으므로 절대 입력하지 않습니다). showError() 메서드는 예외를 catch하고 예외 유형에 따라 다른 오류 페이지를 표시합니다 (이제는 항상 동일한 오류 페이지를 표시 함). url/error로 가면 오류 페이지가 표시되므로 showError() 메서드는 정상입니다.

저는 스프링 3을 사용하고 있습니다.

무슨 문제가있을 수 있습니까?

감사합니다. 당신이 당신의 로그를 보면

+2

예외 처리를 컨트롤러에서 분리하려는 경우 http://static.springsource.org/spring/docs/3.0 대신 HandlerExceptionResolver를 사용하십시오. x/spring-framework-reference/html/mvc.html # d0e29470 – skaffman

답변

7

, 당신은 아마이 나타납니다 :

java.lang.IllegalStateException을 : 지원되지 않는 인수를 [org.springframework.ui.Model] @ExceptionHandler 방법 즉

를 들어, @ExceptionHandler 방법은 Model 매개 변수를 선언 할 수 없습니다 (docs 참조).

어쨌든 사용하지 않는 매개 변수를 제거하면 예상대로 작동합니다.

+0

감사합니다. 사실이지만 문제는 해결되지 않습니다. 그 예외가 동일한 컨트롤러 내부에있는 메서드에 의해 throw 된 경우에만 잡힐 것을 알았습니다. 이 버그로 인한 것일 수 있습니다 : https://jira.springsource.org/browse/SPR-5959 – Javi

+1

@ Javi : 버그는 아니며, 의도적으로 설계되었으며 http : //static.springsource에 명시되어 있습니다. org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html # mvc-ann-exceptionhandler – skaffman

+0

위의 링크 된 문서 페이지를 보았지만 밀도가 있어야합니다. 메소드에 Model 매개 변수를 포함 할 수 없다는 것을 지적한 적이 있습니까? – chrismarx

관련 문제