package com.longchi.common;
public class Result {
private String code;
private Object data;
private String msg;
// 不携带参数 成功时有可能不返回数据 定义一个success
public static Result success() {
Result result = new Result();
result.setCode("200");
result.setMsg("请求成功");
return result;
}
// 携带参数 成功时返回数据 定义一个success
public static Result success(Object data) {
Result result = new Result();
result.setCode("200");
result.setData(data);
result.setMsg("请求成功");
return result;
}
// 定义统一的code(比如code为500),返回msg
public static Result errror(String msg) {
Result result = new Result();
result.setCode("500");
result.setMsg(msg);
return result;
}
// 自定义code参数 传两个参数,比如code是400,或者401,500等等,返回msg
public static Result errror(String code, String msg) {
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
学会看网络请求
按F12或者在页面右键,点击'检查'就可以看到控制台了
全局异常处理
在 longchi目录下创建 exception 包,在 exception 目录下创建
GlobalExceptionHandler.java 文件
复制代码
package com.longchi.exception;
/*
全局的异常捕获器
*/
import com.longchi.common.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
// 要标注在类上,表示当前类是一个全局异常处理器的类
@ControllerAdvice("com.longchi.controller")
public class GlobalExceptionHandler {
// 配置一个log
private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(Exception.class)
@ResponseBody // 将result对象转换成json格式 返回json串
public Result error(Exception e) {
log.error("系统异常", e);
return Result.errror("系统异常");
}
@ExceptionHandler(CustomerException.class)
@ResponseBody // 将result对象转换成json格式 返回json串
public Result CustomerError(CustomerException e) {
log.error("自定义错误", e);
return Result.errror(e.getCode(), e.getMsg());
}
}
有了全局异常捕获器,重新启动系统,就会抛出如下 '系统异常'
第一种 一般 自定义异常
在 exception 目录下创建 CustomerException.java 文件
复制代码
package com.longchi.exception;
/**
* 自定义异常处理
* 编译时不会报错,只有在运行时报错
* 运行时异常
*/
public class CustomerException extends RuntimeException {
private String code;
private String msg;
// 构造器 (有两个参数)
public CustomerException(String code, String msg) {
this.code = code;
this.msg = msg;
}
// 构造器 (有一个参数)
public CustomerException(String msg) {
this.code = "500";
this.msg = msg;
}
public CustomerException() {
//
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
编辑时可以通过,运行时出错误
500错误: 常见的系统的错误, 抛出这些错误非常不友好,我们应该使用统一的处理方式
系统异常怎么办?
你得看你的控制台,然后找到报错的代码位置,具体地去修正代码
第一个红色框 打印系统异常 第二个红色框 具体的异常位置
此时浏览器返回数据
第二种 自定义异常
有时候前端传了账号密码过来,账号密码错了,我们如何去告诉前端你的账户密码错了。此时就需要自定义异常来处理此种情况。我们对外抛出一个错误,可能在service层,它不在controller层。在 service 层我们不能直接 Result,Result是在controller层包装的,想在别的层抛出错误,该如何处理?
1, 创建 service 文件夹 ,在 该目录下 创建 AdminService.java 文件,代码如下: