又抛异常了?可能你对Java的异常体系还没了解到位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了又抛异常了?可能你对Java的异常体系还没了解到位相关的知识,希望对你有一定的参考价值。

又抛异常了?可能你对Java的异常体系还没了解到位

什么?这是谁的代码,抛出了大量的异常,这下全完了!写个代码抛出异常让人头疼,这篇文章就带你了解一下让你头疼的异常

异常的捕捉

所有的异常都是Exception类的子类,所以我们在try catch捕捉异常的时候不指名具体异常的话就直接catch Exception,这样所有的异常都会被拦截。对应catch捕捉异常的匹配,遵循就近原则,如果多个异常捕捉,第一个异常的捕捉匹配成功了,后面的异常捕捉就无需执行了。

下面这个例子体现了这一异常匹配逻辑:

    try 
      throw new Xpp();
     catch(Xpp s) 
      System.out.println("Caught Xpp");
     catch(XppBase a) 
      System.out.println("Caught XppBase");
    

Xpp继承XppBase,像Xpp异常匹配成功了,第二个异常捕捉的处理就不执行了,同理,调换他们的位置,对XppBase的捕捉生效,第二个异常捕捉得不到执行。

Throwable类

Throwable类有两个异常的子类,Error和Exception。Error类表示的时候编译时和系统的错误,一般不用管这个类。Exception类是我们程序员需要处理的类。RuntimeException是运行时异常,一般是代码逻辑写的有问题导致的,比如空指针、数组越界等等。

Exception类

Exception类继承了Throwable类,Throwable类提供了getMessage()方法用来获取详细信息,提供printStackTrace()方法打印调用栈路径。

下面这张图说明了我们上面提到了类的之间的关系,希望对你理解Java的异常体系有所帮助:

总结

这篇文章我们主要说了Java的异常体系,包括如何捕捉异常信息,以及异常体系的Throwable类、Exception类等等异常类,对应异常类的匹配,如果父类被捕捉了,子类的异常就不会捕捉了。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞

    以上是关于又抛异常了?可能你对Java的异常体系还没了解到位的主要内容,如果未能解决你的问题,请参考以下文章

    foreach 集合又抛经典异常了,这次一定要刨根问底

    又抛出了一个异常:A RenderFlex 右边溢出了 3.0 像素

    Java异常处理

    初识异常

    谈谈你对异常的理解(高频面试题)

    Java基础系列5:深入理解Java异常体系