Exception Handling @ExceptionHandler + @RestControllerAdvice/@ControllerAdvice + @ResponseStatus
@RestControllerAdvice & @ControllerAdvice + @ExceptionHandler
@RestControllerAdvice
là một Annotation gắn trên Class. Có tác dụng xen vào quá trình xử lý của các @RestController
. Tương tự với @ControllerAdvice
. @RestControllerAdvice
thường được kết hợp với @ExceptionHandler
để cắt ngang quá trình xử lý của Controller, và xử lý các ngoại lệ xảy ra.
@RestControllerAdvice
public class ApiExceptionHandler {
@ExceptionHandler(IndexOutOfBoundsException.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public ErrorMessage TodoException(Exception ex, WebRequest request) {
return new ErrorMessage(10100, "Đối tượng không tồn tại");
}
}
Hiểu đơn giản là Controller đang hoạt động bình thường, chẳng may có một Exception được ném ra, thì thay vì báo lỗi hệ thống, thì nó sẽ được thằng @RestControllerAdvice
và @ExceptionHandler
đón lấy và xử lý. Sau đó trả về cho người dùng thông tin hữu ích hơn.
@ResponseStatus
@ResponseStatus
là một cách định nghĩa HttpStatus trả về cho người dùng. Nếu bạn không muốn sử dụng ResponseEntity
thì có thể dùng @ResponseStatus
đánh dấu trên Object
trả về.