2016-07-15 13 views
1

私は基本的な質問をしている場合は申し訳ありませんが、Spring 4 MVC、Jerseyプロジェクトでグローバル例外処理を維持し、IOSモバイルアプリケーションへのJSON応答を返す必要があります。上記のアプローチが正しいか、すべての例外を処理するための任意の別の方法がある場合は今@ControllerAdviceと@ExceptionHandlerを使用することによって、私はSpring 4 mvcグローバル例外処理

@ControllerAdvice 
public class GlobalExceptionHandlerController { 

    @ExceptionHandler(Exception.class) 
    public @ResponseBody handleException(HttpServletRequest reqException ex) { 
      ErrorInfo response=new ErrorInfo(); 
        if(ex.getMessage.contains("java.io")){ 
        response.setMessage("FileNotFound exception occur"); 
         return response; 
        }else if ... 
    } 

以下のようなクラスを作成してアドバイスしてくださいコントローラ、サービスやDAO層で発生します。

+0

これはジャージーとはどういう関係がありますか?私はあなたのジャージへの投稿の参照を参照してください、しかし私は他のサポートの詳細は表示されません。 –

答えて

2

あなたが使っているものは正しいです、すべての例外はただ処理されます。サービスまたはDaoレイヤーでは、ビジネス例外をスローする必要があります。作成したクラスは例外を捕捉します。しかし、 、独自のビジネス例外を定義します。ここには のコード例があります。

@ExceptionHandler(RuntimeException.class) 
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR) 
@ResponseBody 
public ErrorResponse handleUnexpectedServerError(RuntimeException ex) { 
    ex.printStackTrace(); 
    return new ErrorResponse("012", ex.getMessage()); 
} 

ビジネス例外を処理する場合、BusinessErrorExceptionはカスタム例外です。

@ExceptionHandler(BusinessErrorException.class) 
@ResponseStatus(value = HttpStatus.BAD_REQUEST) 
@ResponseBody 
public ErrorResponse handleBusinessErrorException(BusinessErrorExceptionex) { 

    return new ErrorResponse(ex.getCode(), ex.getMessage()); 
} 
関連する問題