springboot-异常处理
1 创建一个响应类
用于封装数据。
public class Msg<T> implements Serializable {
private String status;
private String message;
private T data;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public Msg() {
}
public Msg(String status, String message, T data) {
this.status = status;
this.message = message;
this.data = data;
}
@Override
public String toString() {
return "Msg{" +
"status='" + status + '\'' +
", message='" + message + '\'' +
", data=" + data +
'}';
}
}
2 创建一个异常类
public class LoginException extends RuntimeException{
public LoginException() {
}
public LoginException(String message){
super(message);
}
}
3 创建一个异常处理类
@ControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(LoginException.class)
@ResponseBody
public Msg<String> loginExceptionHandler(Exception e){
System.out.println("出现了异常"+e.getMessage());
return new Msg<>("400", "出现了异常", e.getMessage());
}
}
4 创建controller
这里用到的person,大家可以自己创建。
@Controller
public class HelloController {
@Autowired
private Person person;
@ResponseBody
@GetMapping("/hello")
public String hello(){
System.out.println(person);
return "hello,Spring Boot!";
}
@ResponseBody
@GetMapping("/login")
public Msg<Person> login(String username){
System.out.println("开始进行登陆检测");
if (!"admin".equals(username)){
throw new LoginException("用户或者密码错误");
}
return new Msg<Person>("200", "登陆成功", person);
}
}