Java自学总结之六异常处理

来源:互联网 发布:淘宝客不计入销量 编辑:程序博客网 时间:2024/05/21 14:40

在写程序的过程中,我们难免会调用别人的方法,如果我们调用的方法并不是每次都能得出我们先要的结果,即出现异常时,那么这个时候我们该如何处理这些异常?
首先,异常是一个Exception类型的对象;
其次,who抛出的异常,当我们调用有风险的程序代码时,触发到异常点时,就会抛出异常,异常的程序代码,一般都会用throws申明异常的。如下:这里写代码片
public void takeRisk() throws BadException{
if(abandonAllHop)
{
throw new BadException();
}
}

这里说明一下throws和throw的区别:
throws 是用来申明异常的,就是调用给方法时可能发生的异常;throw是用来创建Exception对象。
再讲如何处理异常之前,我们先来谈一下,出现异常时的栈展开
我们所调用的方法会抛出异常,而异常总是会丢给调用函数方,如果调用方有如下的try和catch结构,那么就执行catch中的内容:


这里写代码片
public void crossFingers(){
try{
anObject.takeRisk();
}catch(BadException ex){
System.out.println(“aaargh!”);
ex.printStackTrace();
}
}
如果没有catch呢,调用函数就退出,并且继续在调用函数的函数中查找catch,这就是栈展开。
根据这一特性,我们在遇到不想处理的异常是可以duck(躲避)掉,也就是层层的调用异常函数的所有函数都申明异常但都没有catch,那么就会重重返回调用方,但总要有人去处理这个异常,因为如果连main函数都throws异常时,Java虚拟机也没办法了,所以这种方法其实就是在踢皮球,总会在某个地方被处理的。
最后讲一下,一个try结构可以有几个catch(子类在前,父类在后),而且异常是具有多态性的。

0 0
原创粉丝点击