项目用到了springboot,本来很高兴,但是项目里什么东西都没有,验证,全局异常这些都需要自己区配置。最近springboot用的还是蛮多的,我还是做事情,把经验发表一下.全局统一的异常,首先异常的返回值和正常返回的返回值应该统一json.返回值的code和msg可以用enum保存起来,controller层的方法抛出异常.下面看代码.

package com.lianrong.system.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.converter.HttpMessageNotReadableException;
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.bind.annotation.ResponseStatus; import com.lianrong.system.constants.MessageConstant;
import com.lianrong.system.base.SimpleServiceResult;
import com.lianrong.system.exception.ServiceException; @ControllerAdvice
public class AdviceController {
private static final Logger logger = LoggerFactory.getLogger(AdviceController.class); @ExceptionHandler(ServiceException.class)
@ResponseBody
public SimpleServiceResult handlerException(ServiceException e) {
logger.warn("预知异常", e);
//SimpleServiceResult jsonResult = new SimpleServiceResult();
//jsonResult.setStatus(false);
//jsonResult.addMsg(MessageConstant.E0000_9999, e.getMessage());
return SimpleServiceResult.error500(e.getMessage());
} @ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseBody
@ResponseStatus(value= HttpStatus.BAD_REQUEST)
public SimpleServiceResult handlerException(HttpMessageNotReadableException e) {
logger.error("服务器未能理解请求!", e);
//SimpleServiceResult jsonResult = new SimpleServiceResult();
//jsonResult.setStatus(false);
//jsonResult.addMsg(MessageConstant.E0000_0502, "服务器未能理解请求!");
return SimpleServiceResult.error500("服务器未能理解请求!");
} @ExceptionHandler(Exception.class)
@ResponseBody
public SimpleServiceResult handlerException(Exception e) {
logger.error("运行时异常", e);
//SimpleServiceResult jsonResult = new SimpleServiceResult();
//jsonResult.setStatus(false);
//jsonResult.addMsg(MessageConstant.E0000_9999, "运行时异常");
return SimpleServiceResult.error500("运行时异常");
}
}
package com.lianrong.system.exception;

public class ServiceException extends  RuntimeException {

    private static final long serialVersionUID = 1L;

    public ServiceException(String message) {
super(message);
}
}
package com.imooc.shoptest001.handle;

import com.imooc.shoptest001.utils.JsonData;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; /**
* 全局异常捕获
*/
@ControllerAdvice
public class ExceptionHandle { /**
* ExceptionHandler 捕获什么异常
* ResponseBody 返回json格式
* @return
*/
@ExceptionHandler(value = Exception.class)
@ResponseBody
public JsonData handle(Exception ex){
ex.printStackTrace();
System.out.println(ex.toString());
return JsonData.error500(ex.getMessage());
}
}
package com.imooc.shoptest001.utils;

public enum JsonDataEnum {
ERROR(-,"失败"),
SUCCESS(,"成功"),
;
private Integer code; private String msg; JsonDataEnum(Integer code,String msg){
this.code = code;
this.msg = msg;
} public Integer getCode() {
return code;
} public String getMsg() {
return msg;
}
}
package com.imooc.shoptest001.utils;

/**
* 前台返回json类
*/
public class JsonData<T> {
/**
* 返回状态
*/
private boolean status;
/**
* 错误码/正确码
*/
private Integer code;
/**
* 消息.
*/
private String msg;
/**
* 具体的内容.
*/
private T data; public static JsonData success(String msg,Object data){
JsonData jsonData = new JsonData();
jsonData.setMsg(msg);
jsonData.setStatus(true);
jsonData.setCode();
jsonData.setData(data);
return jsonData;
} public static JsonData ok(){
JsonData jsonData = new JsonData();
jsonData.setStatus(true);
jsonData.setCode();
return jsonData;
} public static JsonData error(Integer code,String msg){
JsonData jsonData = new JsonData();
jsonData.setStatus(false);
jsonData.setCode(code);
jsonData.setMsg(msg);
return jsonData;
} public static JsonData error500(String msg){
JsonData jsonData = new JsonData();
jsonData.setStatus(false);
jsonData.setCode();
jsonData.setMsg(msg);
return jsonData;
} public boolean isStatus() {
return status;
} public void setStatus(boolean status) {
this.status = status;
} public Integer getCode() {
return code;
} public void setCode(Integer code) {
this.code = code;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public T getData() {
return data;
} public void setData(T data) {
this.data = data;
}
}

另外自己写了一个jsonData返回类

package com.lianrong.system.base;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map; /**
* 返回json的工具类.
*/
public class JsonData implements Serializable { private static final long serialVersionUID = -1140504575505840707L;
/**
* 请求结果正不正常.
*/
private boolean status;
/**
* 消息.
*/
private String msg;
/**
* 返回码
*/
private int code;
/**
* 数据:
*/
private Object data; public JsonData(boolean status){
this.status = status;
} public JsonData(boolean status,int code){
this.status = status;
} public static JsonData success(Object object,String msg){
JsonData jsondata = new JsonData(true);
jsondata.data = object;
jsondata.code = ;
jsondata.msg = msg;
return jsondata;
} public static JsonData success(Object object){
JsonData jsondata = new JsonData(true);
jsondata.data = object;
jsondata.code = ;
return jsondata;
} public static JsonData success(){
return new JsonData(true,);
} public static JsonData error(String msg){
JsonData jsondata = new JsonData(false);
jsondata.msg = msg;
return jsondata;
} public static JsonData error500(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",请求未完成。服务器遇到不可预知的情况。";
return jsondata;
} public static JsonData error501(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",请求未完成。服务器不支持所请求的功能。";
return jsondata;
} public static JsonData error502(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",请求未完成。服务器从上游服务器收到一个无效的响应。";
return jsondata;
} public static JsonData error503(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",请求未完成。服务器临时过载或当机。";
return jsondata;
} public static JsonData error504(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",网关超时。";
return jsondata;
} public static JsonData error401(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",被请求的页面需要用户名和密码。";
return jsondata;
} public static JsonData error402(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",此代码尚无法使用。";
return jsondata;
} public static JsonData error403(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",对被请求页面的访问被禁止。";
return jsondata;
} public static JsonData error404(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",服务器无法找到被请求的页面。";
return jsondata;
} public static JsonData error406(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",服务器生成的响应无法被客户端所接受。";
return jsondata;
} public static JsonData error505(String msg){
JsonData jsondata = new JsonData(false);
jsondata.code = ;
jsondata.msg = msg+",服务器不支持请求中指明的HTTP协议版本。";
return jsondata;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public Object getData() {
return data;
} public void setData(Object data) {
this.data = data;
} public boolean isStatus() {
return status;
} public void setStatus(boolean status) {
this.status = status;
} public int getCode() {
return code;
} public void setCode(int code) {
this.code = code;
} public Map<String,Object> toMap(){
HashMap<String,Object> result = new HashMap<String,Object>();
result.put("status",status);
result.put("msg",msg);
result.put("code",code);
result.put("data",data);
return result;
} }

(办公)springboot配置全局异常的更多相关文章

  1. SpringBoot(6) SpringBoot配置全局异常

    1.全局异常 @ControllerAdvice 如果是返回json数据 则用 RestControllerAdvice,就可以不加 @ResponseBody //捕获全局异常,处理所有不可知的异常 ...

  2. 【spring】-- springboot配置全局异常处理器

    一.为什么要使用全局异常处理器? 什么是全局异常处理器? 就是把错误异常统一处理的方法. 应用场景: 1.当你使用jsr303参数校验器,如果参数校验不通过会抛异常,而且无法使用try-catch语句 ...

  3. (入门SpringBoot)SpringBoot配置全局异常(五)

    Spring的全局异常,用于捕获程序员没有捕获的异常.具体请看下面代码: 1.ControllerAdvice拦截异常,统一处理.通过Spring的AOP来管理. @ControllerAdvicep ...

  4. Spring Boot配置全局异常捕获

    1 SpringBoot配置全局的异常捕获 项目的说明 配置thymeleaf作为视图模板 ExceptionController.java模拟测试用 MyAjaxExceptionHandler.j ...

  5. (办公)springboot配置表单验证@Valid

    项目用到了springboot,本来很高兴,但是项目里什么东西都没有,验证,全局异常这些都需要自己区配置.最近springboot用的还是蛮多的,我还是做事情,把经验发表一下. SpringBoot提 ...

  6. Springboot项目全局异常统一处理

    转自https://blog.csdn.net/hao_kkkkk/article/details/80538955 最近在做项目时需要对异常进行全局统一处理,主要是一些分类入库以及记录日志等,因为项 ...

  7. 4、springboot之全局异常捕获

    1.新建一个springboot项目 添加一个全局异常的类 import org.springframework.web.bind.annotation.ControllerAdvice; impor ...

  8. SpringBoot配置全局自定义异常

    不同于传统集中时Springmvc 全局异常,具体查看前面的章节https://www.cnblogs.com/zwdx/p/8963311.html 对于springboot框架来讲,这里我就介绍一 ...

  9. SpringBoot捕获全局异常

    1.创建GloableExceptionAop类捕获全局异常 package com.cppdy.exception; import org.springframework.web.bind.anno ...

随机推荐

  1. 使用redis 中的事务处理实现商品秒杀

    redis中的事务处理: redis中的事物事物处理是指能够批量的执行一组命令(当事务开始执行时,事务中的命令能够按照按照规定好的顺序执行而不会被插队或打断): 与mysql事务的区别在于:mysql ...

  2. U盘制作微pe工具箱(实战)

    分享人:广州华软 浩言 前言 相信大家平时生活中还是工作上使用电脑的时间还是比较多的,有时候电脑出现故障,比如系统文件损坏,没办法正常开机,或者是开机密码忘了,想要重装系统等,下面我推荐一个U盘启动项 ...

  3. 安卓开发笔记(十九):异步消息处理机制实现更新软件UI

    主界面代码 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:andr ...

  4. shell读取文件内容并进行变量赋值

    需求: shell读取文件内容,然后把内容赋值给变量然后进行字符串处理 实现: dataline=$(cat /root/data/data.txt) echo $dataline

  5. PTA 深入虎穴 (正解)和树的同构

    在上一篇博客中分享了尝试用单链表修改程序,虽然在Dev上运行没有错误,但是PTA设置的测试点有几个没有通过,具体不清楚问题出现在哪里,所以现在把之前正确的程序放在这里. 7-2 深入虎穴 (30 分) ...

  6. Java Thread.join的作用和原理

    很多人对Thread.join的作用以及实现了解得很少,毕竟这个api我们很少使用.这篇文章仍然会结合使用及原理进行深度分析 内容导航 Thread.join的作用 Thread.join的实现原理 ...

  7. Java核心技术第五章——2.Object类

    Object类:所有类的超类 Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的.但是并不需要这样写: public class Emloyee extends Object ...

  8. 为什么要重写 hashcode 和 equals 方法?

    引言 以前面试的时候被面试官问到过这样一个问题: 你有没有重写过 hashCode 方法? 心里想着我没事重写哪玩意干啥,能不写就不写.嘴上当然没敢这么说,只能略表遗憾的说抱歉,我没写过. 撇了面试官 ...

  9. 【深度学习篇】--Seq2Seq模型从初识到应用

    一.前述 架构: 问题: 1.压缩会损失信息 2.长度会影响准确率 解决办法: Attention机制:聚焦模式 “高分辨率”聚焦在图片的某个特定区域并以“低分辨率”,感知图像的周边区域的模式.通过大 ...

  10. 【重学计算机】机组D4章:存储系统

    1. 存储系统层次结构 主存速度缓慢的原因:主存增速与CPU不同步,执行指令期间多次访问主存 主存容量不足的原因: 存在制约主存容量的技术因素:如由CPU.主板等相关技术指标规定了主存容量 应用对主存 ...