java中为什么引入异常抛出机制_第十八章:Java的异常机制

异常是Java的重要组成部分,异常也使得程序的编写与测试变得更加轻松。8b22ab26ef493287a87a82da4f4b89c6.png

什么是异常:

异常我们可以理解为“异于正常”,就是错误,在程序运行过程中出现错误,导致程序出现非预期场景,这些场景通常都是我们不希望出现的。

Java异常机制的优点:

有利于筛查错误:当出现错误时马上就会抛出异常,并且每个异常都有自己专属的名称,大部分异常也会带有有价值的附加信息,同时打印异常时还可以打印堆栈信息,可以快速找到发生异常的代码。

学过C++的同学可能知道C++发生异常时的痛苦,程序崩溃不会有像Java一样的提示信息,只会告诉你类似这样子的东西:127d2b8484a691929004017bfd05c1c1.png

没有经验的话遇到这类异常一定束手无策,完全不知道发生了什么,而Java则避免了这个问题:737971ca88a4b0c1c78e6eb3fa558938.png

Java异常的体系结构:55e20574dcf8c52e6d42b7faf0d728f7.pngThrowable:Throwable是所有异常/错误的父类

Error:Error类描述的是内部系统错误,例如Java虚拟机崩溃,自Error派生的错误都是虚拟机抛出的,仅靠程序自身无法解决的错误,编写程序时我们不应该通过这个类来编写自己的异常

Exception:所有用户异常的父类,除RuntimeException外自Exception派生的异常都需要使用try-catch进行捕捉

RuntimeException:运行时异常,虽然该异常派生自Exception,但其行为与Exception不同,运行时异常不要求但可以使用try-catch捕捉

抛出异常:

当一个程序发生异常时会怎么样呢?答案是一直向上抛,直到遇到可以处理这个异常的try-catch块或者抛到虚拟机中(抛到虚拟机里的同时也代表程序的结束)。

使用异常的注意事项:

不要使用异常来代替方法的返回值,因为抛出异常是一个很慢的过程。异常是不应该产生的错误,所以大多数虚拟机并没有对异常机制进行很多性能优化,所以返回数据还是老老实实用返回值或者容器吧。

try-catch的新特性:try-with-resources

JDK7以前我们可能需要这么写代码:3175a8b26db5bffe91ff671a8acf3a25.png

但是现在不用了,我们可以直接写成这样子:7dd9df02c7643617b16fcda20359c4c6.png

是不是方便了很多,当try语句块结束时虚拟机会自动关闭“( )”中的资源。5ca5f088d4f5648cb6aa0b03a5473418.png

这里没有说异常的抛出、处理的方法,因为书中和网上这方面讲的很详细,没有什么需要多说的了,如果不清楚的话就自己动手找找资料吧~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值