springMVC异常处理流程
1.创建异常状态的类
package com.javasm.http;
//创建异常状态
public enum EnumStatus {
//枚举对象 这里的 ; 是创建EnumStatus类时自动生成的,不是敲的
SUCCESS(20000, "请求成功"),
ERROR(50000, "请求失败"),
LOGIN_EXCEPTION(40002,"用户名或者密码错误"),
ORDER_ABNORMALITY(40003,"订单异常"),
PARAMETER_EXCEPTIONS(40004,"参数不正确");
private int status;//状态码
private String message;//状态码对应的提示信息
EnumStatus(int status, String message) {
this.status = status;
this.message = message;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
//1.定义status 和message
//2.生成getter和setter方法
//3.生成构造方法
//4.调用构造方法创建枚举对象
}
2.创建LoginException类,生成一个构造方法,在controller层抛出异常的时候调用
@Data
//继承RuntimeException表示运行时异常
//LoginException记录的异常需要交给全局异常进行处理,里面包含状态码和状态信息
//创建LoginException的作用:供外界调用里面的各种状态码和状态值,外界需要什么状态码,就通过LoginException获取
public class LoginException extends RuntimeException{
private EnumStatus enumStatus; //这里有 status message 属性
// 2.生成一个构造方法,供外界调用
public LoginException(EnumStatus enumStatus) {
this.enumStatus = enumStatus;
}
}
3.自定义异常(异常是controller抛出的,这里为了演示方便,自定义了若干异常)
package com.javasm.controller;
import com.javasm.exception.LoginException;
import com.javasm.http.EnumStatus;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
//这里是自定义的异常,出现某个异常就通过调用LoginException里的状态值和状态码,来给这个异常起名字
public class ExceptionController {
//登录异常
@PostMapping("login")
public String login(){
if (true){
throw new LoginException(EnumStatus.LOGIN_EXCEPTION);
}
return "success";
}
//订单异常
@PostMapping("order")
public String order(){
if (true){
throw new LoginException(EnumStatus.ORDER_ABNORMALITY);
}
return "success";
}
}
4.创建ExceptionMessageBean,用来包含处理异常的状态码和状态信息
@Data
public class ExceptionMessageBean {
private int status;
private String message;
}
5.处理controller抛出的异常
//GloableExceptionHander是不处理异常,只是将异常变成json格式传给前端,前端将异常信息显示出来即可
/*
1.捕获异常
直接将LoginEeception这个类名当做参数传进Handle方法中,LoginEeception包含所有的异常
2.获取枚举对象
EnumStatus enumStatus = e.getEnumStatus();
3.获取枚举对象的状态码和状态值
int status = enumStatus.getStatus();
String message = enumStatus.getMessage();
4.此时的状态码和状态值就是想要显示的异常
将 status 和message放进exceptionMessageBean里面
5.将exceptionMessageBean里的对象转换成json字符串并返回
return new ResponseEntity(exceptionMessageBean, HttpStatus.OK);
*/
@RestControllerAdvice//Advice是加强的意思,表明这个类处理controller的异常
public class GloableExceptionHander {
@ExceptionHandler(LoginException.class)//只处理LoginException.class 类异常的方法,抛出的异常都在这个类当中
//new LoginException(EnumStatus.LOGIN_EXCEPTION)抛出的这个异常被被形参LoginException e获取到
//ResponseEntity把对象转成json字符串传给前端
public ResponseEntity handlerLoginException(LoginException e) {
//获取到枚举对象
EnumStatus enumStatus = e.getEnumStatus();
//获取状态码
int status = enumStatus.getStatus();
//获取message
String message = enumStatus.getMessage();
// 将以上获取到的状态放进exceptionMessageBean展示在页面上
//ResponseEntity是个泛型,里面只能存在一个参数
ExceptionMessageBean exceptionMessageBean = new ExceptionMessageBean();
exceptionMessageBean.setStatus(status);
exceptionMessageBean.setMessage(message);
return new ResponseEntity(exceptionMessageBean, HttpStatus.OK);
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 【线性代数笔记】线性代数知识点总结、概念之间关系总结
矩阵的秩
行列式
几何
欧氏空间
特征值与特征向量
二次型
矩阵的关系总结
一些技巧文章目录 矩阵的秩 1. 基础 2. 秩与行列式的关系 3. 秩与伴随矩阵的关系 4. 秩标准型 5. 秩与分块矩阵的关系 6. 秩与向量组的关系 7. 秩与线性方程组的关系 8. 秩与特征值的关系 9. 秩与相似对角化的关系 10. 秩与线性空间的关系 11…