1. 程式人生 > >springboot配置全局異常

springboot配置全局異常

第一步 異常拋出 else esc dtree title utils tro print

第一步 controller中

package cn.itcast.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import cn.itcast.springboot.pojo.IMoocJSONResult;

@Controller
@RequestMapping("err")
public class ErrorController {

@RequestMapping("/error")
public String error() {

int a = 1 / 0;

return "thymeleaf/error";
}

@RequestMapping("/ajaxerror")
public String ajaxerror() {

return "thymeleaf/ajaxerror";
}

@RequestMapping("/getAjaxerror")
@ResponseBody
public IMoocJSONResult getAjaxerror() {

int a = 1 / 0;

return IMoocJSONResult.ok();
}
}

引用的類,早已寫好的.

package cn.itcast.springboot.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: 自定義響應數據結構
* 這個類是提供給門戶,ios,安卓,微信商城用的
* 門戶接受此類數據後需要使用本類的方法轉換成對於的數據類型格式(類,或者list)
* 其他自行處理
* 200:表示成功
* 500:表示錯誤,錯誤信息在msg字段中
* 501:bean驗證錯誤,不管多少個錯誤都以map形式返回
* 502:攔截器攔截到用戶token出錯
* 555:異常拋出信息
* Copyright: Copyright (c) 2016
* Company:Nathan.Lee.Salvatore
*
* @author leechenxiang
* @date 2016年4月22日 下午8:33:36
* @version V1.0
*/
public class IMoocJSONResult {

// 定義jackson對象
private static final ObjectMapper MAPPER = new ObjectMapper();

// 響應業務狀態
private Integer status;

// 響應消息
private String msg;

// 響應中的數據
private Object data;

private String ok; // 不使用

public static IMoocJSONResult build(Integer status, String msg, Object data) {
return new IMoocJSONResult(status, msg, data);
}

public static IMoocJSONResult ok(Object data) {
return new IMoocJSONResult(data);
}

public static IMoocJSONResult ok() {
return new IMoocJSONResult(null);
}

public static IMoocJSONResult errorMsg(String msg) {
return new IMoocJSONResult(500, msg, null);
}

public static IMoocJSONResult errorMap(Object data) {
return new IMoocJSONResult(501, "error", data);
}

public static IMoocJSONResult errorTokenMsg(String msg) {
return new IMoocJSONResult(502, msg, null);
}

public static IMoocJSONResult errorException(String msg) {
return new IMoocJSONResult(555, msg, null);
}

public IMoocJSONResult() {

}

// public static LeeJSONResult build(Integer status, String msg) {
// return new LeeJSONResult(status, msg, null);
// }

public IMoocJSONResult(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}

public IMoocJSONResult(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 IMoocJSONResult formatToPojo(String jsonData, Class<?> clazz) {
try {
if (clazz == null) {
return MAPPER.readValue(jsonData, IMoocJSONResult.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 IMoocJSONResult format(String json) {
try {
return MAPPER.readValue(json, IMoocJSONResult.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

/**
*
* @Description: Object是集合轉化
* 需要轉換的對象是一個list
* @param jsonData
* @param clazz
* @return
*
* @author leechenxiang
* @date 2016年4月22日 下午8:35:31
*/
public static IMoocJSONResult 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;
}

public void setOk(String ok) {
this.ok = ok;
}

}

第二步:引入異常的包用下面的類

參考代碼.

第三步:在controller中

寫入一個1/0返回錯誤頁面

springboot配置全局異常