美文网首页
Java开发中异常怎么定义好

Java开发中异常怎么定义好

作者: EternalCode | 来源:发表于2019-10-18 13:25 被阅读0次

一个项目在运行过程中必定会产生异常的,那么异常处理就是必须的。一个结构良好的异常类,对于快速定位产生的bug是非常有利的。
1.异常枚举类

public enum SysExceptionEnum {
/**
* 枚举异常码
*/
INTERNAL_ERROR("501", "系统内部异常"),
ILLEGAL_PARAM("502", "请求参数不合法"),
SQL_ERROR("503", "数据库操作异常,字段不合格或者主键冲突等!"),
;
/**
* 私有枚举构造参数和构造函数
*/
    private String code;
    private String message;

    SysExceptionEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }
    /**
     * 通过code找枚举的方法
     */
    public  static SysExceptionEnum get(Long code){
        for (SysExceptionEnum result : values()){
            if (result.getCode().equals(code)){
                return result;
            }
        }
        return null;
    }
    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

2.自定义异常
*继承了RuntimeException

public class SystemException extends RuntimeException {

    private String code ;

    private String message;


    public SystemException(String code,String message) {
        super(message);
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

到此步其实已经可以使用自定异常了,写个测试类测试

public class Test {
    public static void main(String[] args){
            throw new SystemException(SysExceptionEnum.INTERNAL_ERROR.getCode(), 
                SysExceptionEnum.INTERNAL_ERROR.getMessage());
    }
}
异常测试

4.统一异常抛出类
进一步封装异常抛出

public class LeaseException {

    public static void throwSystemException(SysExceptionEnum sysExceptionEnum) {
        try {
            throw new SystemException(sysExceptionEnum.getCode(), sysExceptionEnum.getMessage());
        }catch (SystemException e){
            e.printStackTrace();
        }
    }
}

5.在Spring项目中配套使用统一异常返回处理

@Controller
@ControllerAdvice
public class BaseController {

    protected <T> ResponseObject<T> success(T dataObject) {
        return new ResponseObject<>(dataObject);
    }

    protected  ResponseObject success(){
        return  new ResponseObject();
    }

    @ExceptionHandler
    public @ResponseBody
    ResponseObject exceptionHandler(HttpServletRequest request, HttpServletResponse httpResponse, Exception ex) {
        ResponseObject responseObject = new ResponseObject() ;
        ex.printStackTrace();
        try {

            if(ex instanceof SystemException) {//自定义异常提示
                SystemException  systemException = (SystemException) ex;
                responseObject.setMessage(systemException.getMessage());
                responseObject.setCode(systemException.getCode());
                return responseObject;
            }else if( ex instanceof DataAccessException){//数据库操作异常
                responseObject.setMessage(SysExceptionEnum.SQL_ERROR.getMessage());
                responseObject.setCode(SysExceptionEnum.SQL_ERROR.getCode());
                return responseObject;
            }else{
                responseObject.setMessage(SysExceptionEnum.INTERNAL_ERROR.getMessage());
                responseObject.setCode(SysExceptionEnum.INTERNAL_ERROR.getCode());
                return responseObject;
            }
        } catch (Exception e) {//其他系统内部异常
            responseObject.setMessage(SysExceptionEnum.INTERNAL_ERROR.getCode());
            responseObject.setCode(SysExceptionEnum.INTERNAL_ERROR.getMessage());
            return responseObject;
        }

    }

}

相关文章

  • Java开发中异常怎么定义好

    一个项目在运行过程中必定会产生异常的,那么异常处理就是必须的。一个结构良好的异常类,对于快速定位产生的bug是非常...

  • 第二章 异常日志

    本文参考《阿里巴巴Java开发手册》 1 异常处理 (1)【强制】Java 类库中定义的可以通过预检查方式规避...

  • 你所需要的java异常的处理和设计及深入理解,看这篇就差不多了

    一. 异常的定义 在《java编程思想》中这样定义 异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常...

  • Java SE 5

    Java SE 1.Java异常处理机制 Java异常结构中定义有Throwable类,Exception和Err...

  • Java之异常处理

    异常的定义 异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。 (开发过程中的语法错误和逻辑错误不...

  • 自定义异常和带你与太阳肩并肩的神器

    java零基础入门-高级特性篇(十) 异常 下 除了系统定义好的异常,在实际工作中,会需要按照业务逻辑定义各种自定...

  • 异常处理

    定义 在Java语言中,将程序执行中发生的不正常情况称为“异常”(开发过程中的语法错误和逻辑错误不是异常) 分类 ...

  • JNI--异常处理

    JAVA中可以使用try catch捕获异常,那么JNI中如果发生了异常会是什么现象呢? 我们在JAVA中定义na...

  • java小白翻身-异常处理02: 常见异常

    归纳一些Java开发中常见的一些异常。 步骤 1 异常的继承图谱 步骤 2 java中异常分类 Throwab...

  • Android程序员日常开发中异常总结

    CaptainAndroid.png Java异常 平时开发中遇到的java异常很多,因为引起原因一目了然,当然也...

网友评论

      本文标题:Java开发中异常怎么定义好

      本文链接:https://www.haomeiwen.com/subject/oyqmuctx.html