@ExceptionHandlerと@ControllerAdvice
クイズ1
次のコードについて、正しい説明はどれですか。
Java
@RestController
public class UserController {
@GetMapping("/users/{id}")
public UserResponse find(@PathVariable long id) { ... }
@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<String> handle(UserNotFoundException e) {
return ResponseEntity.status(404).body(e.getMessage());
}
}同じアプリの中に OrderController があり、そちらのメソッドからも UserNotFoundException が投げられます。このとき OrderController から投げられた例外は、どこで処理されますか。
クイズ2
アプリのすべてのコントローラから投げられた例外を、1 か所にまとめて処理したいとします。最も適切なのはどれですか。
クイズ3
次の advice があります。
Java
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleAll(Exception e) { ... }
@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<String> handleNotFound(UserNotFoundException e) { ... }
}UserNotFoundException が投げられたとき、呼ばれるのはどちらですか。ただし UserNotFoundException は RuntimeException を継承しています。
クイズ4
次のハンドラが返す応答のステータスコードはどれですか。
Java
@ExceptionHandler(UserNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ErrorResponse handle(UserNotFoundException e) {
return new ErrorResponse("USER_NOT_FOUND", e.getMessage());
}クイズ5
@ExceptionHandler を付けたメソッドの戻り値について、正しい説明はどれですか。
未回答の問題は、不正解として正解と解説のみ表示します
ログインが必要です
クイズに回答するにはログインしてください。