【发布时间】:2018-02-19 22:04:23
【问题描述】:
使用 ControllerAdvice 抛出 RuntimeException 和手动返回 ResponseEntity 处理客户端错误时,速度有区别吗?
1) 控制器建议
@RestController
public class ObjectController {
@PostMapping
public Object save(@RequestBody Object object) {
if (service.isInvalid(object))
throw new ObjectException("Client error");
return service.save(object);
}
}
public class ObjectException extends RuntimeException {
}
@ControllerAdvice
public class ObjectControllerAdvice extends ResponseEntityExceptionHandler {
@ExceptionHandler(value = {ObjectException.class})
protected ResponseEntity<Object> handleConflict(ObjectException ex, WebRequest request) {
return handleExceptionInternal(ex, ex.getLocalizedMessage(), new HttpHeaders(),
HttpStatus.BAD_REQUEST, request);
}
}
2) 手动返回ResponseEntity
@RestController
public class ObjectController {
@PostMapping
public ResponseEntity<Object> save(@RequestBody Object object) {
if (service.isInvalid(object))
return new ResponseEntity<>("Client error", HttpStatus.BAD_REQUEST);
return new ResponseEntity<Object>(service.save(object), HttpStatus.OK);
}
}
【问题讨论】:
标签: spring exception model-view-controller