我不开心TnT 2016-06-05 09:05 采纳率: 0%
浏览 2184
已结题

如何使用枚举定义JAVA自定义异常类

如何使用枚举定义JAVA自定义异常类然后抛到前断呢??具体实现的思路是什么呢!!!!!!在线!!!急!!!!

  • 写回答

3条回答

  • qq_35227774 2016-06-05 09:40
    关注

    在系统开发过程中,总少不免要自己处理一些异常信息,然后将异常信息变成友好的提示返回到客户端的这样一个过程,之前都是new一个自定义的异常,当然这个所谓的自定义异常也是继承RuntimeException的,但这样往往会造成异常信息说明不一致的情况,所以就想到了用枚举来解决的办法。

    1,先创建一个接口,里面有两个方法,一个是getCode, 一个是getMessage
    Java代码
    public interface ExceptionEnums {

    public int getCode();  
    
    public String getMessage();  
    

    }

    2,创建一个枚举,实现ExceptionEnums里的方法
    Java代码
    public enum DBExceptionEnums implements ExceptionEnums{

    UNIQUE_KEY(10001, "主键约束错误");  
    
    public int code;  
    public String message;  
    
    private UserEnums(int code, String message){  
        this.code = code;  
        this.message = message;  
    }  
    
    
    @Override  
    public int getCode() {  
        return code;  
    }  
    
    @Override  
    public String getMessage() {  
        return message;  
    }  
    

    }

    3,定义一个自定义的异常类
    Java代码
    public class ServiceException extends RuntimeException{

    private ExceptionEnums exceptionEnums;

    public ServiceException(ExceptionEnums exceptionEnums){

    this.exceptionEnums = exceptionEnums;

    }

    public ExceptionEnums getExceptionEnums(){

    return exceptionEnums;

    }

    .....其它get/set方法

    }

    4,业务代码中抛出ServiceException
    Java代码
    if(true){

    throw new ServiceException(DBExceptionEnums.UNIQUE_KEY);

    }

    5,Controller处理抛出的异常
    Java代码
    try{

    }catch(ServiceException se){

    logger.dubug(se.getMessage, se);

    return buildExceptionJSON(se); //返回异常JSON

    }

    buildExceptionJSON(示例)
    Java代码
    private String buildExceptionJSON(ServiceException se){

    ExceptionEnums enums = se.getExceptionEnums();

    return "{'code':"+ enums.getCode+",'message':' "+enums.getMessage()+"'}";

    }

    这样做的好处是可以高度统一所有异常返回的code及message, 如果需要更改提示信息或代号,只需更改DBExceptionEnums即可,并且可以自行添加多个异常枚举文件来分别对应不同的模板异常信息。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?