异常笔记整理

来源:互联网 发布:耿光刚 大数据 编辑:程序博客网 时间:2024/06/08 07:26

异常的特点:

1.        JVM或程序员生成的异常对象,并且抛出

2.        逐层寻找异常处理代码,如无,继续向上抛,如有,异常到此结束。

3.        如果异常抛到main()方法还无处理代码,程序到此结束,被异常中断

4.        异常会中断本层的代码

Runtime Exception 运行时异常/非检测异常

其它异常 检测异常(编译时检测)

大多数异常是可避免的

Java的异常处理:try/catch/ finally 捕获

                           throws 抛出

try {

      可能发生异常的代码

}catch XX Exception e{0-n

      异常处理代码

}finally {

      一定要执行的代码   1-0

}

异常的处理情况:

1.        不发生异常 try – finally

                                    catch trycatchfinally

2.        发生异常 try语句必须中断)    

否则 tryfinally→结束

注意在异常的catch语句中e.printStackTrace必须存在,否则会出现隐藏问题(运行时产生异常),导致程序无法运行,而不知道产生的具体位置。

异常无法返回

不同的异常采用不同的处理方式,可以使用多个catch子句

多个catch子句时,由上而下依次catch(先小后大)

try catchif/else效果

一个方法的结束有3种情况:

1.        方法执行完毕

2.        遇到return语句

3.        有未处理的异常抛出

finally 语句在异常处理过程中必须被执行,执行带真正的return之前要先执行finally

如果在方法或者构造中不捕获异常。可以使用throws将异常上交调用者处理,它只能帮助通过编译,并不能处理异常

异常如果可以确定处理则用trycatch,如果不能确定处理则用throws

方法和构造都可以用throws

throws的位置在方法大括号之前

throws RuntimeException无意义,一般是跟检测异常

throw抛出异常(由程序员抛出)对象是一个语句,必须抛出异常

throws抛出异常类由虚拟机抛出

当程序到throw时方法必须结束,其后不跟语句。

方法重写时,名字,返回值,参数必须相同,子类抛出异常不能比父类更大的异常

泛型在小括号中不能用catch()必须在catchException e

自定义异常步骤:

1.        extends Exception或者Exception子类

2.        提供无参,String作参数的两个构造

属性无重写,无覆盖,子类与父类同名的属性在两个内存里。