【异常处理五个关键字】
try、catch、finally、throw、throws
【异常的分类】
Throwable:是所有异常类和错误类的基类。其下有Error和Exception两种。
Error:是系统内部的错误,无法处理的。由Java虚拟机产生并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。
Exception:所有异常类的父类。其下有两种子类异常,一种属于RuntimeException是可处理也可不处理的异常;另一种属于必须必须catch和处理的异常。
RuntimeException:如被0除、数组下标超范围等,产生频繁,处理麻烦,若显示的声明或捕捉将会对程序可读性和运行效率影响很大。因此由系统自动检测并将他们交给缺省的异常处理程序(用户可不对其处理)。
【基本概念】
1、Java异常是Java提供的用于处理程序中错误的一种机制。
2、所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界 ,所读文件不存在)。
3、设计良好的程序应该在异常发生时提供处理这些错误的方法,使程序不会因为异常的发生而阻断或产生不可预见的结果。
4、Java程序的执行过程中如出现异常事件,可生成一个异常对象,该异常对象封装了异常事件的信息并将被提供交给Java运行时系统,这个过程称为抛出(throw 异常)。
5、当Java运行时系统接收异常对象时,会寻找能处理这一异常的代码并把当前对象将给其处理,这一过程叫捕捉(catch)异常。
【finally】
代码范例:
try{
//可能抛出异常的语句
}catch(SomeException1 e)
{
............
}catch(SomeException2 e)
{
.............
}finally{.......}
finally的作用在于无论报不报错,都执行finally。
1、try语句指定了一段代码,该代码就是一次捕获并处理例外的范围。
2、在执行过程中,该段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做相应处理。
3、若没有例外产生,所有的catch代码段都被略过不执行。
4、无论try所指定的程序块中是否抛出例外,finally所指定的代码都要被执行。
5、通常finally语句中可进行资源的清除工作,如:关闭打开的文件,删除临时文件等等。
【使用自定义异常】
1、通过继承java.lang.Exception类声明自己的异常类。
2、在方法适当的位置生成自定义异常的实力,并用throw语句抛出。
3、在方法前声明部分用throws语句声明该方法可能抛出的异常。
【切记】重写方法需抛出与原方法所抛出异常类型一致异常或不抛出异常!!!!!
【面对异常两个处理方式】
1、抛出(抛出异常的方法在调用的地方一定要处理!!或者继续抛出!!!)
举例:
class A{
public void f() throws SomeException{ //抛出异常
...............
}
public static void main(String args[]){
A a = new A() ;
trry{
a.f()
}catch(SomeException se){
................
}
}
void f1() throw SomeExcepton{ f2(); } //抛出异常
void f2() throw SomeExcepton{ f3() ; }
void f3() throw SomeExcepton {
throw new SomeExcepton(“SomeException occars!”) ;
}
}
2、捕捉