【发布时间】:2019-02-22 20:36:30
【问题描述】:
我参考了几篇文章来使用 @ControllerAdvice 为我使用 spring 的 rest api 项目创建全局异常处理程序。这样做的目的是在发生异常的情况下向客户端发送正确格式的响应。在一些文章中,他们在全局异常处理程序中添加了Throwable 或Exception。
我应该用RunTimeException 替换它,因为这个块是为了在运行时发生异常?
异常处理代码:
@ControllerAdvice
public class GlobalExceptionHandler{
@ExceptionHandler(NoDataFoundException.class)
@ResponseStatus(code=HttpStatus.NOT_FOUND)
public ResponseEntity<ErrorResponse> handle(NoDataFoundException ex){
ErrorResponse errorResponse = new ErrorResponse(ex.getMessage(), HttpStatus.NOT_FOUND.value());
ResponseEntity<ErrorResponse> response = new ResponseEntity<ErrorResponse>(errorResponse, HttpStatus.NOT_FOUND);
return response;
}
..... more methods to handle custom exceptions
@ExceptionHandler(Exception.class)
@ResponseStatus(code=HttpStatus.INTERNAL_SERVER_ERROR)
public ResponseEntity<ErrorResponse> handle(Exception ex){
ErrorResponse errorResponse = new ErrorResponse("Something went wrong", HttpStatus.INTERNAL_SERVER_ERROR.value());
ResponseEntity<ErrorResponse> response = new ResponseEntity<ErrorResponse>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
return response;
}
}
错误响应代码:
public class ErrorResponse {
private String message;
private int statusCode;
public ErrorResponse(String message, int statusCode) {
super();
this.message = message;
this.statusCode = statusCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
}
参考资料:
【问题讨论】:
标签: java spring spring-boot exception-handling