枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。下面先来看看什么是枚举?如何定义枚举?

 

package com.hainei.common.enums;

import sun.awt.SunHints;

public enum BasePermissionType {
    MENU((byte)0,"菜单"),
    BUTTON((byte)1,"按钮");
    public Byte type;
    public String value;

    BasePermissionType(byte type, String value) {
        this.type = type;
        this.value = value;
    }
}

 

自定义异常处理

LdarException

java 枚举乱码 java枚举报错_定时任务

java 枚举乱码 java枚举报错_定时任务_02

package com.hainei.common.exception;

import com.hainei.common.exception.code.LdarResponseCode;

/**
 * Created with IntelliJ IDEA.
 * User:wq
 * Date:2020/4/10
 * Time: 9:51
 * Description: No Description
 */
public class LdarException extends RuntimeException {

    private final int code;

    private final String deafultMessage;

    public LdarException( int code, String deafultMessage) {
        super(deafultMessage);
        this.code = code;
        this.deafultMessage = deafultMessage;
    }

    public LdarException(LdarResponseCode ldarResponseCode){
        this(ldarResponseCode.getCode(),ldarResponseCode.getMsg());
    }

    public int getCode() {
        return code;
    }

    public String getDeafultMessage() {
        return deafultMessage;
    }
}

View Code

 

以及枚举类型

LdarResponseCode

java 枚举乱码 java枚举报错_定时任务

java 枚举乱码 java枚举报错_定时任务_02

package com.hainei.common.exception.code;

/**
 * Created with IntelliJ IDEA.
 * User:wq
 * Date:2020/4/10
 * Time: 9:23
 * Description: No Description
 */
public enum LdarResponseCode implements  ResponseCodeInterface{

    /**
     * 这个要和前段约定好
     *code=0:服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
     *code=40100001:(授权异常) 请求要求身份验证。 客户端需要跳转到登录页面重新登录
     *code=40100002:(凭证过期) 客户端请求刷新凭证接口
     *code=40300001:没有权限禁止访问
     *code=400xxxxx:系统主动抛出的业务异常
     *code=50000001:系统异常
     *
     */
    SUCCESS(0, "操作成功"),
    DATA_ERROR(40000001,"关键字段为空"),
    ADD_ERROR(40000002,"请先添加设备!"),
    //METHOD_IDENTITY_ERROR(40000002,"数据校验异常"),
    FILE_UPLOAD_ERROR(40000003,"文件上传失败"),

    SYSTEM_ERROR(50000001,"系统异常请稍后再试"),

    ACCOUNT_ERROR(40000003,"该账号不存在"),
    ACCOUNT_PASSWORD_ERROR(40000004,"用户名密码不匹配"),

    OPERATION_ERROR(40000005,"操作失败"),
    OPERATION_DATA_MISS_ERROR(40000006,"数据不存在,请刷新后重试"),
    OPERATION_CATEGORY_HAS_CHILD_ERROR(40000007, "该分类下面还有子节点不能删除"),
    OPERATION_CATEGORY_HAS_DATA_ERROR(40000008, "该分类下面含有数据不能删除"),
    OPERATION_SYS_CONFIG_MISS_DATA_ERROR(40000009, "系统配置数据缺失,请联系管理员"),

    OPERATION_SCHEDULE_GET_CronTrigger_ERROR(40000010, "获取定时任务CronTrigger出现异常"),
    OPERATION_SCHEDULE_CREATE_ERROR(40000010, "创建定时任务失败"),
    OPERATION_SCHEDULE_RUN_ERROR(40000010, "立即执行定时任务失败"),
    OPERATION_SCHEDULE_PAUSE_ERROR(40000010, "暂停定时任务失败"),
    OPERATION_SCHEDULE_RESUME_ERROR(40000010, "恢复定时任务失败"),
    OPERATION_SCHEDULE_DELETE_ERROR(40000010, "删除定时任务失败"),
    OPERATION_SCHEDULE_UPDATE_ERROR(40000010, "更新定时任务失败"),

    OPERATION_DELETE_PERMISSION_ERROR(40000011, "该权限绑定着菜单,无法删除"),
    OPERATION_HAS_SAME_NAME_ERROR(40000012, "已经存在同名数据,请检查后重试"),

    ACTIVATION_CODE_EXPIRED_ERROR(40100001,"系统激活码已失效,请联系管理员"),
    TOKEN_NOT_NULL(40100001,"token 不能为空"),
    SHIRO_AUTHENTICATION_ERROR(40100001,"用户认证异常"),
    ACCOUNT_LOCK(40100001,"该账号被锁定,请联系系统管理员"),
    ACCOUNT_HAS_DELETED_ERROR(40100001,"该账号已被删除,请联系系统管理员"),
    TOKEN_ERROR(40100001,"用户未登录,请重新登录");


    /**
     *  响应码
     */
    private int code;

    /**
     * 提示
     */
    private String msg;

    LdarResponseCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    @Override
    public int getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }
}

View Code

 

ResponseCodeInterface接口

package com.hainei.common.exception.code;

public interface ResponseCodeInterface {
    int getCode();

    String getMsg();
}