美文网首页
java优雅处理自定义异常

java优雅处理自定义异常

作者: flyingkid | 来源:发表于2019-08-21 20:06 被阅读0次
自定义异常使用

在java项目中, 一般使用自定义异常对程序做一些特殊处理。使用自定义异常的方式,能更清楚的表现出程序中的逻辑问题。 如何优雅的使用异常,就是一门学问了。

本文采用枚举来处理自定义异常, 使用lombok生成get/set,以及构造方法

  1. 新建异常枚举类
import lombok.AllArgsConstructor;

/**
 * @ClassName: ExceptionEnum
 * @Description: TODO(异常枚举)
 * @Author: flyingkid
 * @Date: 2019-08-16 20:08:42
 */
@AllArgsConstructor
public enum ExceptionEnum {

    UNKNOWN_EXCEPTION("unknown_exception","未知异常"),

    SYSTEM_EXCEPTION("system_exception","系统异常"),

    PARAMETER_EXCEPTION("parameter_exception","参数异常");


    public final String code;

    public final String message;

}
  1. 自定义异常类,继承RuntimeException
import com.example.common.enums.ExceptionEnum;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

/**
 * @ClassName: ExampleException
 * @Description: TODO(自定义异常)
 * @Author: flyingkid
 * @Date: 2019-08-16 20:07:25
 */
@Data
@Slf4j
public class ExampleException extends RuntimeException{

    private static final long serialVersionUID = -6979901566637669960L;

    private ExceptionEnum exceptionEnum;

    private String code;

    private String message;


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

    public ExampleException(ExceptionEnum exceptionEnum){
        super(exceptionEnum.message);
        this.exceptionEnum = exceptionEnum;
    }


    public ExampleException(String code,String message,Throwable throwable){
        super(message,throwable);
        this.code = code;
        this.message = message;
    }

    public ExampleException(ExceptionEnum exceptionEnum,Throwable throwable){
        super(exceptionEnum.message,throwable);
        this.exceptionEnum = exceptionEnum;
    }


    /**
     * @description TODO 重写Throwable中printStackTrace方法,打印异常信息
     * @return void
     * @date 2019/8/21 下午7:57
     * @author flyingkid
     */
    @Override
    public void printStackTrace(){
        if (exceptionEnum != null){
            log.info("异常代码: {}, 异常信息: {}",exceptionEnum.code,exceptionEnum.message);
            return;
        }
        log.info("异常代码: {}, 异常信息: {}",code,message);
    }

}
  1. 使用
 public static void main(String[] args) {
        try {
            if (true){
                //抛出异常
                throw new ExampleException(ExceptionEnum.SYSTEM_EXCEPTION);
            }
        }catch (ExampleException e){
            //异常捕获
            e.printStackTrace();
        }
    }

控制台打印

19:36:10.678 [main] INFO com.example.common.exception.ExampleException - 异常代码: system_exception, 异常信息: 系统异常

Process finished with exit code 0

相关文章

  • java优雅处理自定义异常

    自定义异常使用 在java项目中, 一般使用自定义异常对程序做一些特殊处理。使用自定义异常的方式,能更清楚的表现出...

  • Exception

    Java 中 9 个处理 Exception 的最佳实践 Java 中的异常和处理详解 如何优雅的设计 Java ...

  • JavaSE之异常

    八、异常 目录:什么是异常、异常体系结构、Java异常处理机制、处理异常、自定义异常、总结 1.Error和Exc...

  • java入门学习提升第十七篇:Java异常处理(下)

    今天继续讲解java中的异常处理机制,主要介绍Exception家族的主要成员,自定义异常,以及异常处理的正确姿势...

  • Java优雅的异常处理

    Java中出现报异常,会导致代码无法成功编译,影响后面代码的执行,所以我们要解决这些异常。 常用的异常的处理方式有...

  • Python:如何处理异常错误和避免

    异常错误 这个其实和Java是非常相似的,这里只是说说它的基本用法:捕捉异常,处理异常,自定义异常,记录异常: 断...

  • springMVC异常处理

    异常的处理 自定义异常 自定义的异常处理类 当controller中出现异常时,使用自定义异常进行捕获

  • ASP .NET Core Web API_05_异常处理

    默认异常处理 自定义异常处理

  • 我抛了几个异常,领导却说我代码写得好

    前言 小时候写Java代码碰见异常要么全抛,要么全捕。没有优雅的处理过异常,自然也就谈不上利用Java优秀的异常处...

  • 2020-06-27【异常】

    异常体系 JVM的默认处理方案 异常处理 自定义异常

网友评论

      本文标题:java优雅处理自定义异常

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