2016-08-18 3 views
0

스프링 MVC 웹 응용 프로그램에서 FormatterConverter을 사용하고 있습니다. ConversionFailedException을 잡을 수있는 적절한 방법이 있습니까? 내 페이지가 JasperException에 던져지기보다는 다른 것을하고 싶습니다.ConversionFailedException을 잡는 방법?

참고 : Formatter 또는 Converter을 직접 사용하지 않습니다. 어떻게 든 나를 위해 그것을 할 configured Spring. 그래서 양식에서 나는 String을 가지고 있지만 등록 된 ConversionService을 사용하면 내 컨트롤러의 @ModelAttribute -annotated 매개 변수가 객체로 돌아옵니다.

답변

2

당신은 변환 오류를 잡는 대신 제공하기 위해, @ExceptionHandler를 사용하는 클래스

@ExceptionHandler(ConversionFailedException.class) 
public void handleError(ConversionFailedException ex) { 
    // handle the exception 
} 

Reference

+0

아. 나는 이것이 마음에 떠오르는 제일 먼저 이해하지만 나는 'Formatter'또는 'Converter'를 직접 사용하지 않는다. 어떻게 든 나를 위해 그렇게하기 위해 [Spring을 구성했습니다.] (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html#core-convert-Spring-config). 그래서 형태로, 나는'String'을 가지고 있지만 등록 된'ConversionService'를 사용하여 컨트롤러의'@ ModelAttribute' 주석 매개 변수를 객체로 가져옵니다. –

+0

@Kid 나는 나의 대답을 편집했다 – Guy

+0

@Guy 나는 그것을 몇 분 후에 시험 할 것이다! 귀하의 제안에 감사드립니다. 작동하는지 알려 드리겠습니다. –

1

간단한 try/catch 블록이 작동해야합니다.

try { 
    // piece of code that throws the exception... 
} catch (ConversionFailedException exception) { 
    // you have caught the exception, do whatever you want here... 
} 
+0

[내 의견] (http://stackoverflow.com/questions/39016477/how-to-catch-conversionfailedexception/39016529#comment65383521_39016529)을 참조하십시오. –

0

에 추가 자신의 ConversionService 기본을 연장 만들고 convert 방법을 대체 할 수 있습니다 필요한 동작 (예 : 변환 오류 로깅)

+0

오. 저것은 아주 좋은 제안이고 저 같이 사람들을위한 실행 가능한 선택권이다,'Converter'는 웹 애플리케이션에서뿐만 아니라 사용된다. 내 경우에는 404 오류를 나타내는 사용자 지정 예외를 throw하고 싶습니다. 그 예외를 던질 좋은 장소가되지 않습니다. 그러나 나는 당신의 아이디어를 얻는다. 고맙습니다. –