2013-07-08 3 views
2

좋은 하루!스프링 MVC : 예외 처리기를 특정 메서드에 바인딩

나는 @Controller입니다. 일부 메서드는 동일한 예외를 throw하지만 다른 방법으로이 예외를 처리하려고합니다.

@ExceptionHandler을 특정 방법으로 바인딩하는 방법이 있습니까?

+0

왜 그런 다음 방법에서 예외를 처리하지 않습니다 그래서 당신은 당신이이 같은 뭔가 그것을 달성 할 수 있어야 모든 DataIntegrityViolationException 한 방법과 다른 다른 모든 예외를 처리하는 경우

? – zeroflagL

+0

그것은 DataIntegrityViolationException이며 최대 절전 모드 iterceptor에 의해 throw된다는 것을 이해합니다. 즉 실제로 메서드의 본문 내부에 throw되지 않습니다. 나는 try {} catch (Exception ex) {}를 시도해 예외를 잡아 내지 않았다. 그러나 예외 hadler는 그것을 능숙하게 취급한다. –

+0

나는 본다. 메서드에 예외 처리기를 바인딩 할 방법이 없습니다. 매개 변수로 요청을 전달하고 경로를 읽은 다음 수행 할 작업을 결정할 수 있습니다. – zeroflagL

답변

1

특정 @ExceptionHandler을 메서드로 지정할 수는 없지만 @ExceptionHandler 메서드를 특정 Exception에 바인딩 할 수는 있습니다.

@ExceptionHandler(DataIntegrityViolationException.class) 
public void handleIntegrityViolation() { 
    // do stuff for integrity violation here 
} 

@ExceptionHandler(Exception.class) 
public void handleEverythingElse() { 
    // do stuff for everything else here 
} 
관련 문제