java面向对象编程--第十一章 异常处理

时间:2023-01-16 20:16:15

1、异常:描述出错信息的对象。

字节码校验时,如发生错误,则会抛出异常。

2、所有异常的父类是Exception,异常可以捕获,可以处理。

所有错误的父类是Error,错误可以捕获,但不能处理。

Throwable是Exception和Error的父类。

3、通过try{}catch(Exception e){e.printStackTrace();}可以捕获异常,其中try表示需要检测的代码块,catch表示捕获,Exception e表示创建变量e,如果try块中抛出了异常,虚拟机就用e变量指向异常对象。e.printStackTrace();表示将异常对象中封装的异常信息打印出来。

4、异常执行的顺序,先顺序执行try块中的代码,如果try块中有异常发生,则终止try块中的其它代码,转入catch块执行。无论是否有异常,finally都会执行。

5、finally块是无论是否有异常发生,都会执行的代码块。一般用于资源清理工作,比如:流的关闭,数据库连接的关闭等。如果在try块或catch块中有return跳出方法,那么在方法跳出之前,会先执行finally内容,如果try块或catch块中有System.exit(0)中止虚拟机运行,那finally不会执行。

6、可以给一个try块添加多个catch块,当try块中throw异常后,会执行第一个和异常对象匹配的catch块,其余的catch块忽略不会执行。且添加的catch块中异常的类不能把父类异常放到子类异常前。

7、异常分为两类:编译期异常(检查异常)和运行期异常(非检查异常)。其中,编译期异常要求开发者必须捕获和处理的,否则就无法通过编译;运行期异常,开发者可以处理,也可以不处理,无论是否处理都可以通过编译。所有的运行期异常都是RuntimeException的子类。

8、throw 是一条语句,表示显示抛出一个异常对象。

throw new Exception();

9、throws是一个方法修饰符,表示在方法中可能会抛出某个异常。这样,调用方法时,必须捕获和处理该方法抛出的异常。

重写父类方法的子类方法不能声明抛出比父类方法更多的异常。