第五章 异常
1.异常怎么理解
程序在执行中的不正常的情况。
2.异常的作用
当有异常发生时,java将异常信息打印到控制台,拱程序员参考,程序员看到这个异常信息后,
对程序进行修改,让程序更加的健壮性。
3.异常以什么形式存在
以类的形式存在,每一个异常类都可以创建异常对象。
4.异常的继承结构
——————>RuntimeException(运行时异常)
——————>ExceptionSubClass(编译时异常)
——————>Exception(异常)
——————>Object——————>Throwable(不管是错误还是异常都是可抛出的)
————>Error(所有的错误只要发生,java程序只有一种结果那就是终止程序的运行,退出JVM,错误是不能处理的)
——————>VirtualMachineError(虚拟机错误)
——————>IOError(IO异常)
5.什么是编译时异常(ExceptionSubClass)
ClassnNotFoundException:类找不到异常
FilenNotFoundException:文件找不到异常
所有Exception的直接子类,都叫做编译时异常
编译时异常是在编译阶段发生的吗?
不是,编译时异常是表示在编写程序的时候预先对这种异常进行处理,如果不处理编译器报错
6.什么是运行时异常(RuntimeException)
RuntimeException类及其子类,即在运行程序的时候,程序异常终止,控制台出现的异常。
NullPointerException:空指针异常
ClassCastException:类转换异常
ArithmeticException:算数运算异常
IndexOfBoundsException:数组越界异常
SystemException:系统异常
7.异常的两种处理方式
1.在方法声明的位置上使用throws关键字
2.使用try catch语句进行捕捉(catch写多个的时候,遵守从上到下,从小到大)
8.finally字句的用法
放在finally的语句一定会执行。
System.exit(0)除外
9.自定义异常
第一步:编写一个类,去继承Exception或者RuntimeException。
第二步:提供两个构造方法,一个无参数的,一个带有的String参数的。
10.怎么手动抛出异常
throw e;
11.异常对象常用的两个方法?
e.getMessage(); 获取异常描述信息
e.printStaceTrace();打印异常追踪信息
12.方法的重写与异常
子类重写父类后的方法不能比父类抛出更多(更广泛)的异常
13.关键字
final :关键字:修饰的类不能被继承,方法不能被覆盖,属性不能被再次赋值
finally:异常处理机制中的关键字,无论如何finally中的语句都会执行
finalize:Object中方法,可以调用垃圾回收。(不一定执行)