springboot异常返回消息
package com.fl.winter.utils;
import org.springframework.jdbc.BadSqlGrammarException;
import org.springframework.ui.Model;
import java.io.FileNotFoundException;
import java.lang.reflect.InvocationTargetException;
import java.net.SocketException;
import java.sql.SQLException;
import java.sql.SQLRecoverableException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 消息工具
*/
public abstract class MessageUtil {
//
public static final String STATUS = "status"; //状态
public static final String MESSAGE = "message"; //消息
//状态
public static final String SUCCESS = "200"; //成功
public static final String ERROR= "500";//代码错误
// 消息反馈
public static final String ADD = "添加";
public static final String UPDATE = "修改";
public static final String DELETE = "删除";
//异常
//数据库
public static final String SQL_OVERTIME = "数据库遇到错误:连接超时";//服务器遇到错误,无法完成请求,请联系管理员
public static final String SQL = "数据库遇到错误:语句异常";//服务器遇到错误,无法完成请求,请联系管理员
//服务器
public static final String OVERTIME = "服务器遇到错误:连接超时";//服务器遇到错误,无法完成请求,请联系管理员
public static final String UNKNOWN = "服务器遇到错误:未知错误";
public static final String CLASS_NOT_FOUND ="服务器遇到错误:不存在此方法异常";
public static final String NULL_POINTER = "服务器遇到错误:空指针异常";
public static final String NO_SUCH_METHOD = "服务器遇到错误:反射异常";
public static final String ILLEGAL_ACCESS = "服务器遇到错误:安全权限异常";
public static final String INSTANTIATION = "服务器遇到错误:实例化异常";
public static final String INSTANTIATION_TARGET = "服务器遇到错误:实例化异常";
public static final String CLASS_CAST = "服务器遇到错误:类型强制转换异常";
public static final String ARRAY_INDEX_OUT_OF_BOUNDS = "服务器遇到错误:数组下标越界异常";
public static final String FILE_NOT_FOUND = "服务器遇到错误:文件未找到异常";
public static final String NUMBER_FORMAT = "服务器遇到错误:字符串转换为数字异常";
public static final String BAD_SQL_GEAMMAR = "服务器遇到错误:sql语句不正确";
//url
public static final String REEORURL ="/500";
/**
* 通用消息模板
* @param status
* @param message
* @return
*/
public static Map<String, Object> getMessage(String status, String message){
Map<String, Object> messageMap = new HashMap<>();
messageMap.put(STATUS, status);
messageMap.put(MESSAGE, message);
return messageMap;
}
/**
* 通用消息模板-传参
* @param status
* @param message
* @return
*/
public static Map<String, Object> getParamsByList(String status, String message, Map<String, Object> objectMap,List params){
Map<String, Object> map = new HashMap<>();
Map<String, Object> mapList = new HashMap<>();
map.put(STATUS, status);
map.put(MESSAGE, message);
if(objectMap != null) map.putAll(objectMap);
map.put("result", params);
return map;
}
/**
* 状态:200成功,消息返回
* @param mes
* @return
*/
public static Map<String, Object> getSuccessMessage(String mes){
//返回消息,mes为空选择 ,默认值。
return getMessage(SUCCESS , mes != null && mes.length() > 0 ? mes : SUCCESSMESSAGE);
}
/**
* 状态:200,消息通用模板
* @return
*/
public static Map<String, Object> getSuccessMessage(){
return getMessage(SUCCESS , SUCCESSMESSAGE);
}
/**
* 状态:500,消息通用模板
* @return
*/
public static Map<String, Object> getErrorMessage(){
return getMessage(ERROR , ERRORMESSAGE);
}
/**
* 状态:500错误,消息返回
* @param mes
* @return
*/
public static Map<String, Object> getErrorMessage(String mes){
//返回消息,mes为空选择 ,默认值。
return getMessage(ERROR , mes != null && mes.length() > 0 ? mes : ERRORMESSAGE);
}
/**
* 根据result返回数量决定返回消息
* @param result
* @param successMessage
* @param errorMessage
* @return
*/
public static Map<String, Object> getMessageByResult(Integer result, String successMessage, String errorMessage){
if(result != null && result > 0) return getMessage(SUCCESS , successMessage != null && successMessage.length() > 0 ? successMessage : SUCCESSMESSAGE);
else return getMessage(ERROR , errorMessage != null && errorMessage.length() > 0 ? errorMessage : ERRORMESSAGE);
}
/**
* 服务器端错误,捕获异常返回对应消息
* @param e
* @return Map
*/
public static Map<String, Object> getMapMessageByException(Exception e) {
if(e instanceof SQLRecoverableException)return getMessage(ERROR, SQL_OVERTIME + e.getClass());//连接超时
else if(e instanceof SQLException)return getMessage(ERROR, SQL + e.getClass());//连接超时
else if(e instanceof SocketException)return getMessage(ERROR, OVERTIME + e.getClass());//连接超时
else if(e instanceof ClassNotFoundException)return getMessage(ERROR, CLASS_NOT_FOUND + e.getClass());//不存在此方法异常
else if(e instanceof NullPointerException)return getMessage(ERROR, NULL_POINTER + e.getClass());//空指针异常
else if(e instanceof NoSuchMethodException)return getMessage(ERROR, NO_SUCH_METHOD + e.getClass());
else if(e instanceof IllegalAccessException)return getMessage(ERROR, ILLEGAL_ACCESS + e.getClass());
else if(e instanceof InstantiationException)return getMessage(ERROR, INSTANTIATION + e.getClass());
else if(e instanceof InvocationTargetException)return getMessage(ERROR, INSTANTIATION_TARGET + e.getClass());
else if(e instanceof ClassCastException)return getMessage(ERROR, CLASS_CAST + e.getClass());
else if(e instanceof ArrayIndexOutOfBoundsException)return getMessage(ERROR, ARRAY_INDEX_OUT_OF_BOUNDS + e.getClass());//数组下标越界异常
else if(e instanceof FileNotFoundException)return getMessage(ERROR, FILE_NOT_FOUND + e.getClass());//文件未找到异常
else if(e instanceof NumberFormatException)return getMessage(ERROR, NUMBER_FORMAT + e.getClass());//字符串转换为数字异常
else if(e instanceof BadSqlGrammarException)return getMessage(ERROR, BAD_SQL_GEAMMAR + e.getClass());//sql语句不正确
else return getMessage(ERROR, UNKNOWN + e.getClass());//未知错误
}
/**
* 服务器端错误,捕获异常返回url
* @param e
* @return
*/
public static String getUrlMessageByException(Exception e, Model model){
if(e instanceof SQLRecoverableException){
model.addAttribute(MESSAGE, SQL_OVERTIME + e.getClass());
return REEORURL;//连接超时
}else if(e instanceof SQLException){
model.addAttribute(MESSAGE, SQL + e.getClass());
return REEORURL;//连接超时
}else if(e instanceof SocketException){
model.addAttribute(MESSAGE, OVERTIME + e.getClass());
return REEORURL;//连接超时
}else if(e instanceof ClassNotFoundException){
model.addAttribute(MESSAGE, CLASS_NOT_FOUND + e.getClass());
return REEORURL;//不存在此方法异常
}else if(e instanceof NullPointerException){
model.addAttribute(MESSAGE, NULL_POINTER + e.getClass());
return REEORURL;//空指针异常
}else if(e instanceof NoSuchMethodException){
model.addAttribute(MESSAGE, NO_SUCH_METHOD + e.getClass());
return REEORURL;
}else if(e instanceof IllegalAccessException){
model.addAttribute(MESSAGE, ILLEGAL_ACCESS + e.getClass());
return REEORURL;
}else if(e instanceof InstantiationException){
model.addAttribute(MESSAGE, INSTANTIATION + e.getClass());
return REEORURL;
} else if(e instanceof InvocationTargetException){
model.addAttribute(MESSAGE, INSTANTIATION_TARGET + e.getClass());
return REEORURL;
}else if(e instanceof ClassCastException){
model.addAttribute(MESSAGE, CLASS_CAST + e.getClass());
return REEORURL;
}else if(e instanceof ArrayIndexOutOfBoundsException){
model.addAttribute(MESSAGE, ARRAY_INDEX_OUT_OF_BOUNDS + e.getClass());
return REEORURL;//数组下标越界异常
}else if(e instanceof FileNotFoundException){
model.addAttribute(MESSAGE, FILE_NOT_FOUND + e.getClass());
return REEORURL;//文件未找到异常
}else if(e instanceof NumberFormatException){
model.addAttribute(MESSAGE, NUMBER_FORMAT + e.getClass());
return REEORURL;//字符串转换为数字异常
}else if(e instanceof BadSqlGrammarException){
model.addAttribute(MESSAGE, BAD_SQL_GEAMMAR + e.getClass());
return REEORURL;//sql语句不正确
}else {
model.addAttribute(MESSAGE, UNKNOWN + e.getClass());
return REEORURL;//未知错误
}
}
/**
* 参数为空异常:Integer
* @param id
* @return
* @throws Exception
*/
public static boolean notValueException(Integer id) throws Exception {
if(id == null){
throw new NullPointerException(NOTIDERROR);
}
return true;
}
/**
* 参数为空异常:String
* @param value
* @return
* @throws Exception
*/
public static boolean notValueException(String value) throws Exception {
if(value != null && value.length() > 0){
return true;
}
throw new NullPointerException(NOTIDERROR);
}
/**
* 参数为空异常:Object
* @param o
* @return
* @throws Exception
*/
public static boolean notValueException(Object o) throws Exception {
if(o == null){
throw new NullPointerException(NOTIDERROR);
}
return true;
}
public static boolean notValueException(Object o, String message) throws Exception {
if(o == null){
throw new NullPointerException(message);
}
return true;
}
}
getMapMessageByException:出现异常,返回json前端
getUrlMessageByException:出现异常,跳转错误页面