[英]Spring boot - custom exceptions handler
我正在使用Spring Boot開發一個Rest應用程序。 此應用程序具有一個自定義過濾器,該過濾器僅允許在某些請求下進行訪問。 如果用戶需要特定資源,則過濾器將引發異常。 如何在全局級別處理此過濾器中生成的所有異常?
我已經嘗試了@ControllerAdvice
批注,但是沒有用。
首先,您應該創建一個自定義異常並將其從runtimeException擴展
public class CustomException extends RuntimeException
{
...
}
然后你可以像這樣抓住它
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CustomException.class)
public ResponseEntity handleCustomException(CustomException ex) {
return ResponseHelper.response(ex.getData(), ex.getMsg(),
ex.getStatus());
}
}
首先,您可能具有自定義的Exception Handler類,它將替換默認的
ResponseEntityExceptionHandler
以下是我在學習期間使用的一個示例代碼:
@ControllerAdvice
@RestController
public class CustomizedResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(Exception.class)
public final ResponseEntity<Object> handleAllExceptions(Exception ex, WebRequest request) {
ExceptionResponse exceptionResponse = new ExceptionResponse(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(exceptionResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(UserNotFoundException.class)
public final ResponseEntity<Object> handleUserNotFoundException(Exception ex, WebRequest request) {
ExceptionResponse exceptionResponse = new ExceptionResponse(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(exceptionResponse, HttpStatus.NOT_FOUND);
}
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
ExceptionResponse exceptionResponse = new ExceptionResponse(new Date(), "Validation Failed", ex.getBindingResult().toString());
return new ResponseEntity<>(exceptionResponse, HttpStatus.BAD_REQUEST);
}
}
然后,您可以添加自定義的異常,並在需要時補充響應對象。
請在此處找到其他類的完整代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.