Java自学总结之六异常处理

在写程序的过程中,我们难免会调用别人的方法,如果我们调用的方法并不是每次都能得出我们先要的结果,即出现异常时,那么这个时候我们该如何处理这些异常?
首先,异常是一个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值