java---try和throws异常总结
什么是异常?
异常是对问题的描述,将问题对象进行封装成一个对象.
异常的体系
Throwable
|—–Error
|—–Exception
|—–RuntimeException
特点:异常体系中的所有类以及建立的对象都具备可抛性.也就是说可以被throw和throws关键字所操作,只有异常类体系具备这个特点,
throw和throws的用法
throw定义在函数内,用于抛出异常对象
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开的异常类
当函数内容有throw抛出异常对象,并未进行try处理,必须要在函数上声明,否则编译报错.当然RuntimeException除外,也就是说,函数内如果抛出RuntimeException异常,函数上不需要声明.
异常的处理
如果函数声明了异常,调用者需要进行处理,处理方法可以是throws和try
异常有两种:
编译时被检测异常
该异常在编译时,如果没有处理(没有抛出也没有try),编译失败
运行时异常(编译时不检测)
在编译时不需要处理,编译器不检查
该异常发生,建议不处理,让程序停止,需要对代码进行修正.
异常处理格式:
try{
//需要被检测的代码
}
catch(){
//处理异常的代码
}
finally{
//一定会执行的代码
}
注意:
1.finally中定义的通常是 关闭资源代码,因为资源必须释放
2.finally只有一种情况不会执行,当程序在finally之前强行停止,也就是System,exit(0)
自定义异常:
定义类继承Exception或者RuntimeException
1.为了让该自定义类具有可抛性
2.让该类具备操作异常的共性方法
当要定义的自定义异常信息时,可以使用父类已经定义好的功能.异常信息传递给父类的构造函数.
class MyException extends Exception
{
MyException(String message){
super(message);
}
}
自定义异常:按照java面向对象的思想,将程序中出现的特有问题进行封装.
异常的处理原则
1.调用到抛出异常的功能时,抛出几个就处理几个.也就是一个try对应多个catch
2.多个catch情况下,父类的catch放到最下面,以免覆盖异常
3.catch内需要定义针对性的处理方式,不要简单的定义输出语句,也不要不写,这是良好的代码习惯
异常的注意事项
在子父类覆盖时:
1.子类抛出的异常必须是父类的异常的子类或者子集
2.如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try,不能抛出
版权声明:本文为博主原创文章,未经博主允许不得转载。