Spring Bootにおけるグローバルな例外処理の方法は?
Spring Bootでは、@ControllerAdviceと@ExceptionHandlerアノテーションを使用して、グローバルに例外処理を行うことができます。
- コントローラーのアドバイス
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
// 处理异常逻辑
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");
}
@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<String> handleUserNotFoundException(UserNotFoundException e) {
// 处理自定义异常逻辑
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage());
}
}
- @ExceptionHandlerアノテーションを使用して、異常処理メソッドで処理する例外のタイプを指定します。
- 例外処理のメソッドでは、例外の種類に応じて処理ロジックを切り替えることができます。
注意:の例外処理クラスが所属するパッケージをスキャンするため、 соответствующего クラスをスキャンするための追加のパッケージスキャンが必要となります。アバウト@@ComponentScan アノテーションや、@SpringBootApplication アノテーションにscanBasePackages属性を追加して、例外処理クラスの所属するパッケージをスキャンできます。