资讯专栏INFORMATION COLUMN

自定义异常链处理

Leo_chen / 3330人阅读

摘要:自定义项目异常使用自动生成无参和全部参数的构造方法,并生成对应字段的和方法异常链处理层层运行执行之后,在的中捕获到了异常,打印的异常信息为我们在抛出的异常变为切面抛出的异常的就是而不是,到了最终捕获到的还是我们最初的抛出的类型。

1.自定义项目异常

使用lombok自动生成无参和全部参数的构造方法,并生成对应字段的get和set方法

@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyException extends  Exception{
    private int code;
    private String errorMessage;
}
2.异常链处理
/**
 * dao层
 * /
public class MyDao {
    public void getUserInfo() throws MyException{
        throw new MyException(2,"request param error");
    }
}
/**
 * service层
 * /
public class MySerivice {
    public void getUserInfo() throws Throwable{
        MyDao myDao = new MyDao();
        myDao.getUserInfo();
    }
}
public class TTService {
    public static  void main(String[] args){
        MySerivice mySerivice = new MySerivice();
        try {
            mySerivice.getUserInfo();
        }catch (MyException myException){
         System.err.println("myException:"+myException.getCode()+"/"+myException.getErrorMessage());
        }catch (Exception excepiton){
            System.err.println("excepiton:"+excepiton.getMessage());
        }catch (Throwable throwable){    
            System.err.println("throwable:"+throwable.getMessage());
        }
    }
}

运行执行之后,在TTService的MyException中捕获到了异常,打印的异常信息为:

myException:2/request param error

我们在MySerivice抛出的异常变为 Throwable(aop切面抛出的异常的就是Throwable)而不是MyException,到了TTService最终捕获到的还是我们最初的抛出的MyException类型。
(虽然MySerivice抛出父类Throwable,其实父类引用指向子类对象MyException,最终捕获的也就是子类的异常对象MyException)

从上图中我们可以看出,MyException是Exception的子类,而Exception又是Throwable的子类。
我们通过throw抛出异常MyExcepiton,方法通过throws一层层往上抛出的异常要大于等于异常MyExcepiton,也就是说throws抛出的异常必须是MyExcepiton或者父类。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67277.html

相关文章

  • Java 常见异常种类

    摘要:在中,异常被当做对象来处理,其基类是。又分为检查异常和运行时异常。但在子类中,只有三类异常类提供了带参数的构造器,其它类型的异常则需要通过方法。在程序的边界进行异常捕获。只针对异常的情况才使用异常。 1、什么是异常 结构不佳的代码不能运行,这是Java的基本理念。 发现错误的理想时机是在编译期。然而,编译器并不能发现所有的错误,余下的问题就需要在程序运行时解决。这就需要错误能通过某种方...

    ethernet 评论0 收藏0
  • Java 异常处理相关

    摘要:相关类的结构如下所示类类是语言中所有错误和异常的超类,只有当一个对象直接或者间接的是此类的实例时,才能通过语句抛出异常,同样,只有这种类才能被语句捕获进行处理类的子类是错误,不是程序可以处理的,一般会是内存不足,线程终止,虚拟机运行错误等, 相关类的结构如下所示 java.lang.Object java.lang.Throwable java.lang.Error java....

    番茄西红柿 评论0 收藏0
  • SpringMVC之DispatcherServlet(一)

    摘要:调用拦截器的方法,它在处理器实际执行之前会被执行,它在处理器执行完毕以后被执行,它在整个请求处理完成之后被执行。根据参数调用具体的方法,并获取返回值交有具体的参数解析器后,完成具体的相应参数的解析,例如包括请求中得是等进行相应的解析。 官方文档说明 中文文档链接部分内容引字下面博客博客1博客2 前言:DispacherServlet是什么? 与很多的web框架一样,Spring Mvc...

    Chiclaim 评论0 收藏0
  • Java中的异常处理

    摘要:对异常的处理方法是打印异常的跟踪栈信息并终止程序运行。应尽量对异常进行适当的处理,而不是简单的将异常跟踪栈信息打印出来。 一、异常概述 开发者都希望所有错误都能在编译阶段被发现,就是试图在运行程序之前排除所有错误,但这是不现实的,余下问题必须在运行期间得到解决。 Java将异常分为两种:CheckedException和RuntimeException。其中,CheckedExcept...

    wemall 评论0 收藏0
  • JAVA学习之路 (七)异常

    摘要:阻止当前方法或作用域的,称为异常。一非检查异常和,以及她们的子类。强制要求对这类异常做预备处理使用或者。这样的异常一般是由程序的运行环境导致的。后跟的是异常对象,或者异常对象的引用。 异常 什么是异常 相异与常态,和正常情况下不一致,有错误出现。 阻止当前方法或作用域的,称为异常。 异常分类 showImg(https://segmentfault.com/img/bVbfpnY?w=...

    Nekron 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<