异常总结:
是什么:是对问题的描述,将问题进行封装。
异常体系:Throwable
|--Error
|--RuntimeException
异常体系的特点:异常体系中的所有类以及建立的所有对象都具备可抛性。
也就是说可以被throw和throws关键字所处理。
只有异常体系具备这一特点。
Throw和throws的用法:
Throw定义在函数内,用于抛出异常对象
Throws定义在函数上,用于抛出多个用逗号隔开。
当函数内容有throw抛出异常对象,并未用try处理,必须要在函数上声明,否则编译失败
注意,RuntimeException除外,也就是说,函数内如果抛出RuntimeException 异常函数上可以不用声明。
如果函数声明了异常,调用者需要进行处理,处理方式可throws可以try。
异常有两种:1.编译时被检测异常:该异常在编译时如果没有处理(没有throw也没有try),编译失败。该异常被标识,代表可以被处理
2.运行时异常(编译时不检测)在编译时,不需要处理,编译器不检测
该异常的发生,建议不处理,让程序停止,需要对代码进行修正。
异常的处理原则:
1.处理方式有两种:try或者throws
2.调用到抛出异常的功能时,抛出几个,就处理几个。一个try对应多个catch
3.多个catch,父类的catch放到最下面
4.catch内,需要定义针对性的处理方式,不要简单的对应printStackTrace,输出语句,也不要不写。
当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。
try
{
throw new AException();
}
catch (AException e)
{
throw e;
}
异常的注意事项:
在子父类覆盖时:
(1)子类抛出的异常必须是父类异常的子类或者子集。
(2)如果父类或者接口没有异常抛出是,子类覆盖出现异常,只能try不能抛。
Throws和throw的区别
Throws使用还函数上;throw使用在函数内
Throws后面跟的异常类,可以跟多个,用逗号隔开。Throw后跟的是异常对象。
这些事我自己的理解,不知道你能理解吗?
|