2016-08-10 10 views
3

問題があり、例外をキャッチしようとしています。ここでJava Spring @ExceptionHandlerが正しくエラーを処理していません

はResponseErrorHandlerを実装して私のクラスである:

public class ErrorGenerator implements ResponseErrorHandler { 

    @Override 
    public void handleError(ClientHttpResponse response) throws IOException { 
     ServiceError error = objectMapper.readValue(response.getBody(), ServiceError.class); 

String message = "Test" 


    ValidationException exception = new ValidationException(error); 

    throw exception; 
    } 

    @Override 
    public boolean hasError(ClientHttpResponse response) throws IOException { 
     return true; 
    } 
} 

ValidationExceptionがのRuntimeExceptionを拡張はServiceExceptionを拡張します。

はここに私の@ControllerAdviceクラスです

@ExceptionHandler(ServiceException.class) 
public ServiceError handleException(ServiceException exception) { 
return exception.getError(); 
} 

私が受け取るエラーは言う:

Exception thrown in handleError: {} 

私は任意の助けをいただければ幸いです。

+0

これはコンパイルされますか? ValidationException例外=新しいValidationException(エラー); – farrellmr

+2

あなたのメソッドで 'HttpServletRequest request'がparamとして必要だと思います:' handleException(HttpServletRequest request、ServiceException exception) ' – Pau

+0

申し訳ありませんが、間違いです。 :) – Laurynas

答えて

0

パラメータHttpServletRequest requestを渡す必要があり、@Laurynasとして、それはResponseEntity<?>を返すべきであると示唆しています。したがって、解決策は次のようになります。

@ExceptionHandler(ServiceException.class) 
    public ServiceError handleException(HttpServletRequest request, ServiceException exception) { 
     return new ResponseEntity<ServiceError>(exception.getError()); 
    } 
関連する問題