[英]How to handle spring controllers parameter type exceptions
我有簡單的彈簧控制器。
@GetMapping("/test")
@ResponseBody
public String doSomething(@RequestParam int a) {
return String.valueOf(a);
}
當我在查詢字符串中傳遞a = 1時,效果很好。
但是當我通過a = abc時,它給了我這個。
> Failed to convert value of type 'java.lang.String' to required type
> 'int'; nested exception is java.lang.NumberFormatException: For input
> string: "abc".
有沒有辦法讓我可以處理此錯誤,並像必須是數字一樣回復用戶。
提前致謝。
您可以使用@ControllerAdive
處理此類異常。
@ControllerAdvice
public class RestControllerAdive extends ResponseEntityExceptionHandler
{
@ExceptionHandler(value=NumberFormatException.class)
public ResponseEntity<Object> handleNumberFormatException(NumberFormatException ex)
{
return new ResponseEntity({your-error-message}, HttpStatus);
}
}
優雅的解決方案是捕獲異常,然后使用“ ResponseEntity”,如下所示:
我有兩種方法:1.使用Spring ExceptionHandler
@ExceptionHandler({Exception.class})
public ModelAndView handleException(Exception exception) {
ModelAndView modelAndView = new ModelAndView("Exception");
modelAndView.addObject("exception", exception.getMessage());
return modelAndView;
}
代替int,使用String。
public String doSomething(@RequestParam String a){//轉換為int; 驗證和異常處理邏輯將在這里返回return String.valueOf(a); }
我們以這種方式關注。 我們有一個實用程序類,它將具有所有轉換和驗證邏輯。 每次我們只需要調用各自的方法。 喜歡:
UtilityClass.isValidInt(a);
UtilityClass.isValidLong(a);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.