springboot异常返回消息或者返回错误url

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:出现异常,跳转错误页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值