异常分类:错误,异常{运行时异常{数组越界,类型转换错误,空指针访问错误},io异常{从一个无存在的文件读取数据,越过文件结尾继续读取数据,访问url连接错误}}
异常的处理机制:
处理异常:
try{。。。}
catch(exception1:范围由小到大 ){处理:追踪运行栈信息,输出异常信息。}
catch(exception2){处理2}
finally{无论是否发生异常都会执行!}
抛出异常:交给调用它的方法去处理。
写代码时如何避免运行时异常:
访问数组时,判断是数组是否为空,取得数组的大小后在做操作。
空指针,使用对象前,判断对象是否为空。
类型转换错误:做类型转换前,先判断被转换的对象类型。
重写方法时,子类方法不能抛出比父类范围更大的异常,
故将编译时异常转化为运行时异常(自定义异常处理类,继承运行时异常),尽量避免异常的抛出,会破坏分层结构,尤其是接口实现层对异常的处理,如果增加异常抛出,需要上层来处理,破坏代码的可读性.
Throwable 可以将所有异常抛出.
例如:DAO层异处理原则,接口实现方法体内,遇到编译时异常,需要处理异常并在异常处理中抛出运行时异常。保证代码的可读性。
运行时异常和编译时异常:(待续)
--下面给出一个运行时异常的类:
public class AppExceptionhl extends RuntimeException {
}