•编译器不会注意
RuntimeException
类型的异常
•编译器所关心的是受查异常
•异常是Exception类型或其子类的对象
•重写父类方法时,抛出异常类型不能更宽泛
•使用异常会占用资源,影响程序执行效率
•在处理异常的时候,尽量减少try语句块的体积
============================================================================
有try catch finally的程序代码执行顺序是这样的(经过试验):
先执行try 块,从上至下执行代码,直到遇到抛出异常的语句。
立即跳入catch块(try块抛出异常的语句后面的那部分直接被舍弃)
执行catch块内的代码
最后执行finally块的代码
===================================================================
try,catch,finally的四个使用规则:
1).try后面一定要跟catch或finally
2).如果try后面只有finally,那么这个方法一定要声明throws这个异常见解决方案②
3).有catch或finally,则前面一定要有try
4).try 和catch之间不能有其他代码
即
- 有三结合格式
- try
- {
- }
- catch ()
- {
- }
- try
- {
- }
- finally
- {
- }
- try
- {
- }
- catch ()
- {
- }
- finally
- {}
finally块使程序的各部分功能划分更明确,并能避免紊乱
============================================================================
如果被调用的方法抛出了多种异常,那么调用的时候就要写多个catch块,注意要从小到大catch,不然小的子类的异常的catch 块永远都没有机会被使用到
如果被调用的方法抛出了多种异常,那么调用的时候就要写多个catch块,注意要从小到大catch,不然小的子类的异常的catch 块永远都没有机会被使用到
比如:
try{
//...
}catch(IOException){
//...
}catch(Exception){
//...
}
解决方案②:不处理(声明throws这个异常)
如果不catch异常就要把它throws掉:
不过这不是长久之计,不能所有人都不处理异常。
如果最后main函数都不能处理这个异常,JAVA虚拟机只好死给你看:(虽然编译器不会报错)