异常小总结

「这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战」。

茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!

愿你在未来的日子,保持热爱,奔赴山海!

题记:昨天我们已经了解全部的异常的处理机制,接下来就让我们总结下我们学习了什么是异常和极其机制!

👺那异常是什么?

指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。而在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。

👣异常中包含的体系结构

一图看异常体系:

异常体系结构

  • 可以看出异常类的整体继承关系,当然上图不是所有的异常,也有很多子类没有列出,这里先列出了比较常用的异常类。当然,用户自己也可以自定义异常实现。

Throwable下包含着:

  • Error:程序中无法处理的错误,表示运行应用程序中出现了严重的错误。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM出现的问题。
  • Exception:程序本身可以捕获并且可以处理的异常。这类异常一旦出现,我们就要对代码进行更正,修复程序。Exception这种异常又分为两类:运行时异常和编译时异常

😮异常的处理机制

在 Java 应用程序中,异常处理机制为:抛出异常,捕捉异常。

异常处理

  • throw:在方法内部抛出一个Throwable 类型的异常。任何Java代码都可以通过throw语句抛出异常。

  • throws:throws语句用在方法定义时声明该方法要抛出的异常类型,如果抛出的是Exception异常类型,则该方法被声明为抛出所有的异常。

  • try 、finally 、catch

    1. try块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。

    2. catch块:用于处理try捕获到的异常。

    3. finally块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。在以下4种特殊情况下,finally块不会被执行:

      • 在finally语句块中发生了异常。
      • 在前面的代码中用了System.exit()退出程序。
      • 程序所在的线程死亡。
      • 关闭CPU。

那我们如何选择异常类型呢?

可以根据下图来选择是捕获异常,声明异常还是抛出异常

我们在日常处理异常的代码中,应该遵循的原则:

  • 不要捕获类似Exception 之类的异常,而应该捕获类似特定的异常,方便排查问题,而且也能够让其他人接手你的代码时,会减少骂你的次数。
  • 不要生吞异常。这是异常处理中要特别注重的事情。如果我们不把异常抛出来,或者也没有输出到日志中,程序可能会在后面以不可控的方式结束。有时候需要线上调试代码。

🌸总结

相信各位看官都对异常处理机制的概念有了充分的了解吧,接下来我们将要学习JDK1.7有关异常的新特性吧!,那我们继续期待下一章的异常更多的内容吧!欢迎期待下一章的到来!

让我们也一起加油吧!本人不才,如有什么缺漏、错误的地方,也欢迎各位人才大佬评论中批评指正!当然如果这篇文章确定对你有点小小帮助的话,也请亲切可爱的人才大佬们给个点赞、收藏下吧,一键三连,非常感谢!

学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!

感谢各位看到这里!愿你韶华不负,青春无悔!

\