异常的处理
try{
//危险动作;
}catch(Exception ex){
//尝试恢复或者列出有用信息
ex.printStackTrace();
}
1、有风险或者可能会抛出异常的程序代码必须要声明它会抛出异常
2、调用该方法时则需要抛出异常
RuntimeExceptions
RuntimeExceptions及其子类不会被编译器检查
要点:如果try块内部的程序成功运行则会跳过catch块的内容;
finally
1、finally无论如何都会被执行
2、尽量不要在finally块内部进行return
小结
方法可在运行期间遇到问题时抛出异常
异常是Exception类型的对象
方法可以使用throw关键字抛出异常对象
可能会抛出异常的方法必须声明成 throws Exception
如果要处理异常状况,使用try/catch关键字,如果不打算处理异常,可以通过throws声明然后将它传递给上级调用来处理
异常的多态
1、以异常的父型来声明会抛出的异常,这代表可以抛出子类型的异常而不用个别声明
2、以所抛出的异常父型来catch异常,可以catch到任何子类型的异常状况
3、但是有的异常需要单独进行处理,这时候就需要对其编写不同的catch块
4、catch块可以有多个,不过它的排列有要求,必须按照从小到大的顺序从上往下排列,范围小的子类要放在上面不然就不会被调用到
异常的ducking
不想处理异常时候,只要声明异常来告诉编译器,自己了解到这是一个有异常的方法,就可以将异常交给上一级调用来处理,但这只是在踢皮球,并没有真正的处理异常,如果直到main方法都知识进行声明而没有处理异常,这时候因为进行了异常的声明,所以可以通过编译,但是运行时JVM就会中断程序的执行。
所以要在适当的节点进行异常的处理或者声明。