1
私は安らかなエンドポイントを持つスプリングブートアプリケーションを持っています。私は応答を管理することができるように、基本的に例外をトラップするグローバルエラーハンドラを持っています(つまり、応答で大きなJavaスタックトレースを公開したくありません)。スプリングブート - RESTエンドポイントを保護するためのグローバルエラーハンドラを設定する
これを行うにはどうすればよいでしょうか?
私は安らかなエンドポイントを持つスプリングブートアプリケーションを持っています。私は応答を管理することができるように、基本的に例外をトラップするグローバルエラーハンドラを持っています(つまり、応答で大きなJavaスタックトレースを公開したくありません)。スプリングブート - RESTエンドポイントを保護するためのグローバルエラーハンドラを設定する
これを行うにはどうすればよいでしょうか?
目的のタイプのすべての例外をキャッシュする例外ハンドラを使用してコントローラのアドバイスクラスを作成します。
@ControllerAdvice
public class GlobalExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler(Exception.class)
public void handleAll(Exception e) {
log.error("Unhandled exception occurred", e);
}
}
好きな場合は、通常のコントローラメソッドと同じようにメソッドからボディを返すか、単純にHTTPステータスコードを返すことができます。上記のコードは、@ResponseStatus
アノテーションを使用して500を返します。
特定の例外タイプのみをキャッチすることができます。 @ExceptionHandler
アノテーションは、value属性として例外の配列を受け入れます。