SpringBoot前后端交互、全局异常处理:后端异常信息抛到前端显示弹窗
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
// 处理所有Exception类型的异常
@ExceptionHandler(Exception.class)
@ResponseBody
public ResponseEntity<ExceptionResponse> handleException(Exception e) {
// 打印异常堆栈
e.printStackTrace();
// 将异常信息封装到ExceptionResponse对象中
ExceptionResponse exceptionResponse = new ExceptionResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), e.getMessage());
// 返回包含异常信息的响应实体
return new ResponseEntity<>(exceptionResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
// 处理特定的ArithmeticException异常
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public ResponseEntity<ExceptionResponse> handleArithmeticException(ArithmeticException e) {
// 打印异常堆栈
e.printStackTrace();
// 将异常信息封装到ExceptionResponse对象中
ExceptionResponse exceptionResponse = new ExceptionResponse(HttpStatus.BAD_REQUEST.value(), e.getMessage());
// 返回包含异常信息的响应实体
return new ResponseEntity<>(exceptionResponse, HttpStatus.BAD_REQUEST);
}
// 如果需要处理其他特定类型的异常,可以继续添加相应的方法
}
// 异常信息封装类
class ExceptionResponse {
private int statusCode;
private String message;
public ExceptionResponse(int statusCode, String message) {
this.statusCode = statusCode;
this.message = message;
}
// Getter和Setter方法
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
这个代码示例展示了如何在Spring Boot应用中创建一个全局异常处理器,它能捕获并处理应用中发生的各种异常。在这个例子中,我们捕获了两种类型的异常:Exception
(捕获所有异常)和ArithmeticException
(捕获算术异常),并将异常信息封装到ExceptionResponse
对象中,返回给前端。这样,前端就可以根据返回的状态码和信息,弹出相应的对话框。
评论已关闭