SpringBoot 配置全局的异常捕获 - ajax 形式
/**
捕获 ajax 请求
@param request
@param response
@param e
@return
@throws Exception
*/
@ExceptionHandler(value= Exception.class)
public HlvyJSONResult errExceyion(HttpServletRequest request,HttpServletResponse response,Exception e) throws Exception {
e.printStackTrace();
return HlvyJSONResult.errorException(e.getMessage());
}
}
HlvyJSONResult
package com.yh.pojo;
import java.util.List;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
@Title: LeeJSONResult.java
@Package com.lee.utils
@Description: 自定义响应数据结构
Copyright: Copyright (c) 201
6
Company:Nathan.Lee.Salvatore
@author leechenxiang
@date 2016 年 4 月 22 日 下午 8:33:36
@version V1.0
*/
public class HlvyJSONResult {
// 定义 jackson 对象
private static final ObjectMapper MAPPER = new ObjectMapper();
// 响应业务状态
private Integer status;
// 响应消息
private String msg;
// 响应中的数据
private Object data;
private String ok; // 不使用
public static HlvyJSONResult build(Integer status, String msg, Object data) {
return new HlvyJSONResult(status, msg, data);
}
public static HlvyJSONResult ok(Object data) {
return new HlvyJSONResult(data);
}
public static HlvyJSONResult ok() {
return new HlvyJSONResult(null);
}
public static HlvyJSONResult errorMsg(String msg) {
return new HlvyJSONResult(500, msg, null);
}
public static HlvyJSONResult errorMap(Object data) {
return new HlvyJSONResult(501, "error", data);
}
public static HlvyJSONResult errorTokenMsg(String msg) {
return new HlvyJSONResult(502, msg, null);
}
public static HlvyJSONResult errorException(String msg) {
return new HlvyJSONResult(555, msg, null);
}
public HlvyJSONResult() {
}
// public static LeeJSONResult build(Integer status, String msg) {
// return new LeeJSONResult(status, msg, null);
// }
public HlvyJSONResult(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public HlvyJSONResult(Object data) {
this.status = 200;
this.msg = "OK";
this.data = data;
}
public Boolean isOK() {
return this.status == 200;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
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;
}
/**
@Description: 将 json 结果集转化为 LeeJSONResult 对象
@param jsonData
@param clazz
@return
@author leechenxiang
@date 2016 年 4 月 22 日 下午 8:34:58
*/
public static HlvyJSONResult formatToPojo(String jsonData, Class<?> clazz) {
try {
if (clazz == null) {
return MAPPER.readValue(jsonData, HlvyJSONResult.class);
}
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (clazz != null) {
if (data.isObject()) {
obj = MAPPER.readValue(data.traverse(), clazz);
} else if (data.isTextual()) {
obj = MAPPER.readValue(data.asText(), clazz);
}
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
return null;
}
}
/**
@Description: 没有 object 对象的转化
@param json
@return
@author leechenxiang
@date 2016 年 4 月 22 日 下午 8:35:21
*/
public static HlvyJSONResult format(String json) {
try {
return MAPPER.readValue(json, HlvyJSONResult.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
@Description: Object 是集合转化
@param jsonData
@param clazz
@return
@author leechenxiang
@date 2016 年 4 月 22 日 下午 8:35:31
*/
public static HlvyJSONResult formatToList(String jsonData, Class<?> clazz) {
try {
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isArray() && data.size() > 0) {
obj = MAPPER.readValue(data.traverse(),
MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
return null;
}
}
public String getOk() {
return ok;
}
评论