天天看点

Ajax+Json+Java 捕获后端错误信息封装成Json字符串返回给前端控制台显示

楼主自己写的一个错误信息捕获机制,是一个简单的Damo,可在其上进行修改或者扩充,能够通过后端的控制把错误信息封装成Json字符串,返回给前端的Ajax显示。首先创建一个错误信息枚举类(返回给前端的字符串),在Eclipse中依次点击 File-》new-》Enum,错误信息可以自己定义,errorCode是错误码,errorMsg是信息字符串:

public enum ResMessage {
	SUCCESS("0", "成功"), 
    EMPTY_PARAM_ERROR("3000000","入参为空"),
    PARAM_ERROR("3000005", "参数错误"),
    OUTTER_ERROR("3000006", "依赖接口错误或超时"),
    INTER_ERROR("3000500", "服务器内部错误"),
    NO_QUESBANK_ERROR("3000501", "未查到题库信息"),
    UPDATE_QUESBANK_ERROR("3000502", "更新题库失败[数据库操作]"),
    CAST_CLASS_ERROR("3000503", "不能进行强制类型转换"),
    NO_QUESTYPE_ERROR("3000504", "未找到相应的知识类型"),
    UPDATE_QUESTYPE_ERROR("3000505", "更新知识类型失败"),
    SAVE_QUESTION_ERROR("3000506", "题目保存失败[数据库操作]"),
    UPDATE_QUESTION_ERROR("3000507", "题目更新失败[数据库操作]"),
    DELETE_QUESTION_ERROR("3000508", "题目删除失败[数据库操作]");
	
	private String errorCode;
	private String errorMsg;
	
	ResMessage(String errorCode,String errorMsg){
		this.errorCode = errorCode;
		this.errorMsg = errorMsg;
	}

	public String getErrorCode() {
		return errorCode;
	}

	public String getErrorMsg() {
		return errorMsg;
	}

}
           

然后创建一个Json字符串转换类,可将对象封装成Json字符串的格式(直接复制即可):

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
 
import java.io.IOException;
import java.util.List;

public class JsonUtils {
	 
    //定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();
 
    /**
     * 将对象转化为json字符串
     * @param data
     * @return
     */
    public static String ObjectToJson(Object data){
        try{
            String string = MAPPER.writeValueAsString(data);
            return string;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }
 
    /**
     * 将json字符串转化为对象
     * @param jsonData
     * @param beanType
     * @param <T>
     * @return
     */
    public static <T> T jsonToPojo(String jsonData, Class<T> beanType){
        try {
            T t = MAPPER.readValue(jsonData, beanType);
            return t;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
 
    /**
     * 将json字符串数据转化为pojo对象list
     * @param jsonData
     * @param beanType
     * @param <T>
     * @return
     */
    public static <T> List<T> jsonToList(String jsonData, Class<T> beanType){
        JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
        try {
            List<T> list = MAPPER.readValue(jsonData, javaType);
            return list;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
 
}
           

最后定义一个错误信息封装类,成员变量可以自己自定义的,这里我定义了errorMsg错误信息(对应上面的errorMsg),errorCode错误码(对应上面的errorCode),再加一个errorLocation(错误定位,表明错误在哪一个类中):

public class ResponseVo{
	private String errorMsg;
	private String errorCode;
	private String errorLocation;
	

	public ResponseVo(String errorLocation){
		this.errorLocation = errorLocation;
	}


	public String getErrorMsg() {
		return errorMsg;
	}


	public void setErrorMsg(String errorMsg) {
		this.errorMsg = errorMsg;
	}


	public String getErrorCode() {
		return errorCode;
	}


	public void setErrorCode(String errorCode) {
		this.errorCode = errorCode;
	}


	public String getErrorLocation() {
		return errorLocation;
	}


	public void setErrorLocation(String errorLocation) {
		this.errorLocation = errorLocation;
	}


}
           

然后就可以进行错误的捕获了

======================================举个栗子=======================================

当传入的参数为null时,进行错误的捕获,返回给前端,告诉前端 “你传过来的这个参数是空的,我不能继续执行了!”

通过Ajax传参到后端(这里根据你们自己的情况而定,只要是传参到后端即可):

Ajax+Json+Java 捕获后端错误信息封装成Json字符串返回给前端控制台显示

在后端,进行参数是否为空判断:

定义两个变量,res为封装错误信息的对象,初始化参数为当前执行的类名(相当于给errorLocation赋值),resStr用来保存将res转换为Json后的字符串,也是最后要返回的字符串

Ajax+Json+Java 捕获后端错误信息封装成Json字符串返回给前端控制台显示

以下为Ajax进入的方法,ResMessage为上面定义的错误信息类,直接调用它的EMPTY_PARAM_ERROR获得“入参为空”的错误码和错误信息,然后通过上面的JsonUtils转换为Json字符串,Json字符串中默认有‘\’斜杠,如果你不想看这个斜杠,则可以通过replace方法删除字符串中的斜杠‘\’。

Ajax+Json+Java 捕获后端错误信息封装成Json字符串返回给前端控制台显示

至此就完成了一个Damo示例,在前端F12中你将看见你的错误信息被输出。以上只是一个简单的Damo,主要演示了如何封装一个错误信息类和错误信息返回类,通过此方法还可以改造成Exception异常捕获处理、数据库操作错误捕获等……