异常(Exception)
Java使用异常来告诉调用方法:“有问题,我不行了”
Java的异常处理机制是个简洁、轻量化的的执行期间异常情况的处理方式,这让你能够将处理错误状况的程序代码摆在一个容易阅读的位置。但这依赖于你已经知道所调用的方法是有风险的(也就是方法会产生异常)
如何才能得知方法会抛出异常呢?那就得看方法的声明是否有throws语句就知道了
编译器要确定你了解所调用的方法是有风险的
如果你把有风险的程序代码包含在try/catch块中,那么编译器就会放心许多
try/catch块会告诉编译器你确实知道所调用的方法会有风险,并且也已经准备好要处理它,它只会注意你有没有表示你会注意到异常
异常类的继承图:
Review:
方法可以在运行期间遇到问题时抛出异常
异常是Exception类型的对象
编译器不会注意RuntimeException类型的异常,RuntimeException不需要声明或包在try/catch的块中(当然你还是可以这样做)
编译器所关心的是称为检查异常(Checked Exception)的异常,程序必须要认识有异常可能的存在
方法可以用throw关键字抛出异常对象:
Throw new Exception();
会抛出异常的方法必须声明成throws…Exception
如果要处理异常状况,就把调用包在try/catch块中,并将异常处理/恢复程序放在catch块中
Try/catch:如果try块失败了,抛出异常,程序会马上转移到catch块,当catch块完成 后会执行finally块,finally完成后,继续执行其余部分。
如果try块成功,程序会跳过catch块并移动到finally块,当finally块完成后,继续执行其余部分。
如果try或catch块有return语句,finally还是会执行,程序会跳到finally块然后再回到return语句。