java 异常-try
异常: 对问题的描述,将问题进行对象的封装
异常的好处 :
1、将问题进行封装
2、将正常流程代码和问题处理代码相分离,方便于阅读
异常体系中的特点:异常体系中的所有类以及建立的对象都具备可抛性
也就是说可以被throw 和 throws 关键字所操作
throw 和 throws 的用法:
throw 定义在函数内,用于抛出异常对象
throws 定义在函数上,用于招聘异常类,可以抛出多个异常,并用逗号隔开
当函数内容有throw 抛出异常对象,并未进行try处理,必须要在函数上声明,否则在编译上会失败
注意: RuntimeException 除外,函数内如果抛出的RuntimException ,函数上可以不声明
如果函数声明了异常,调用者需要进行处理,处理方法可以throws ,也可以 try
异常有两种 :
编译时被检测异常
运行时异常(编译时不检测)
自定义异常:
定义类继承Exception或者RuntimeException
1、为了让该自定义类具备可抛性
2、让该类具备操作异常的共性方法
当要定义自定义导演的信息时,可以使用父类已经定义好的功能
异常信息传递给父类的构造函数
捕获异常的格式有:
第一个格式
try { }
catch() {}
第二个格式
try { }
catch(){ }
finall { }
第三个格式
try{ }
finally { }
注意:
1、这三个语句块都不能单独使用
2、 finally{ } 语句块中的语句是无论如何都会被执行
如:
public int add()
{
try {
int num = 100 + 100;
return num;
}
catch(Exception e) {
}
finally{ // 放在finally 中的语句块会被执行,即使在try语句块中写了 return ,仍然会执行 finally 中的语句
System.out.println("我这一句代码肯定会被执行");
}
}
// 异常在子父类覆盖中的体现
1、子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只抛出父类的异常或者该异常的子类
2、如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集
3、如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常
4、如果子类方法发生了异常,就必须要进行try处理,绝对不能抛