从异常处理程序返回响应实体[Spring]

时间:2017-06-02 04:26:40

标签: java spring

我使用以下代码来处理使用Scroll View注释的类RuntimeException中的所有类型的异常

@ControllerAdvice

@ExceptionHandler(RuntimeException.class) public ResponseEntity<JSONObject> RuntimeExceptionHandler(RuntimeException e) throws JSONException { JSONObject response = new JSONObject(); response.put("message", e.getMessage()); return new ResponseEntity<JSONObject>(response, HttpStatus.BAD_REQUEST); }

的情况下,它会向客户回复以下回复
ValidationException

这不是我的预期。状态代码不是{ "timestamp": 1496377230943, "status": 500, "error": "Internal Server Error", "exception": "javax.validation.ValidationException", "message": "Name does not meet expectations", "path": "/signup" } ,json与BAD_REQUEST不同。

如果我将response更改为JSONObject并传入字符串消息而不是json对象,则可以正常工作。我还在String语句之前设置了一个断点,return看起来很好。

注意:还有另一篇帖子here

  1. 没有接受的答案。
  2. 使用response注释方法,但我没有。
  3. 未使用@ResponseBody

1 个答案:

答案 0 :(得分:3)

如果您需要返回的JSON格式,请进行快速修复:

@ExceptionHandler(RuntimeException.class)
 public ResponseEntity<String> RuntimeExceptionHandler(RuntimeException e) {
  JSONObject response = new JSONObject();
  response.put("message", e.getMessage());
  return new ResponseEntity<String>(response.toString(), HttpStatus.BAD_REQUEST);
 }