茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!
愿你在未来的日子,保持热爱,奔赴山海!
题记:昨天我们了解了异常的体系一部分有什么?但是它的体系可谓是相当庞大,接下来就让我们一起继续瞧瞧呗!
😄异常的大体系
-
异常体系结构:
📬 Exception(异常)
Exception 是另外一个非常重要的异常子类。程序本身可以捕获并且可以处理的异常。这类异常一旦出现,我们就要对代码进行更正,修复程序。Exception这种异常又分为两类:运行时异常和编译时异常。
🔎2.3.1 运行时异常
-
定义:
RuntimeException
类及其子类异常,如NullPointerException
(空指针异常)、IndexOutOfBoundsException
(下标越界异常)等,表示 JVM在运行期间可能出现的异常。 -
特点:此类异常,Java 编译器不会检查它,属于不受检异常。一般是由程序逻辑错误引起的,此类程序应该从逻辑角度尽可能避免这类异常的发生。而当程序中可能出现这类异常,即使没有用
try-catch
语句捕获它,也没有用throws
子句声明抛出它,也会编译通过。在程序中可以选择捕获处理,也可以不处理。如果产生运行时异常,则需要通过修改代码来进行避免。例如,若会发生除数为零的情况,则需要通过代码避免该情况的发生! -
注意:RuntimeException 异常会由JVM自动抛出并自动捕获(就算我们没写异常捕获语句运行时也会抛出错误!!),此类异常的出现绝大数情况是代码本身有问题,应该从逻辑上去解决并改进代码。
这里我们来看下运行时异常是怎样的,这里我想说下,出现异常,不要紧张,把异常的简单类名,拷贝到API中去查。然后看是什么异常。
可以看出,我们的程序逻辑出现错误,所以出现了算术异常。我们只要修改int b = 10就行了,或者b不等于0都可以。
所以遇到异常,我们不用担心。可以先从查看异常类名开始,看是什么异常,看是什么原因,找到我们程序出错的地方并进行修改就可以正常运行了。
-
那我们什么都没有处理,那出现异常时,是谁处理了这个异常呢?
是JVM的默认处理:把异常的名称,原因,位置等信息输出在控制台,但是呢程序就不能继续执行了。
🔎2.3.2 非运行时异常(编译时异常)
-
定义:Exception中除 RuntimeException 及其子类之外的异常。
-
特点:此类异常, Java 编译器会检查它。如果程序中出现此类异常,从程序语法角度讲是必须进行处理的异常。例如:ClassNotFoundException(没有找到指定的类异常),IOException(IO流异常),要么通过
throws
进行声明抛出,要么通过try-catch
进行捕获处理,否则不能通过编译。 -
注意:在程序中,通常我们不会自定义该类异常,而是直接使用系统提供的异常类。该异常我们必须手动在代码里添加捕获语句来处理该异常。
通过注释可以看到,
createNewFile()
方法是处理了IOException异常的,而IOException异常又继承来自Exception,是非运行时异常,所以必须处理异常。所以我们如果是编译时异常,在编译时期就报错了,必须处理这个异常,不然程序不能编译通过。
🌸总结
相信各位看官都对异常的体系有深入的了解吧,那我们继续期待下一章的异常更多的内容吧!欢迎期待下一章的到来!
让我们也一起加油吧!本人不才,如有什么缺漏、错误的地方,也欢迎各位人才大佬评论中批评指正!当然如果这篇文章确定对你有点小小帮助的话,也请亲切可爱的人才大佬们给个点赞、收藏下吧,一键三连,非常感谢!
学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!
感谢各位看到这里!愿你韶华不负,青春无悔!