try-catch-finally结构体的简要说明

基本结构形式:

try{
   //可能有异常的程序语句体
}
catch (Exception e){
   //输出异常信息
}
finally{
   //希望一定被执行的语句体
}

使用注意事项:

catch语句体可以是很多个,把每一种可能出现的异常情况都罗列出来,但这时必须将异常类型按照从子类到超类的顺序依次排列,因为catch语句体在执行的时候与if-else类似,一旦有一个语句匹配,就进入执行,而不会继续判断,如果将超类写在最前面,就使得后面的语句形同虚设。当然,为了避免这种麻烦,可以用一个Exception类统一接收异常。

finally结构体在一般情况下都会被执行。它相当于一个万能保险,即使是在try块发生异常而catch块没有捕获的情况下也是可以执行的,所以一般将希望一定要执行的语句放在finally语句块里。

系统不会执行finally语句块的常见情况:

(1)在finally语句块中发生了没有处理的异常情况;

(2)在finally前的语句中包含System.exit(0);时程序退出;

(3)程序所在的线程死亡;

(4)cpu关闭。

结构中,catch和finally语句块可以仅出现一个,这在语法上是允许的;但必须出现一个,否则不能通过编译。


语句执行顺序:

当try语句块内有异常发生时,中断语句块中剩余语句的执行,并产生一个异常所对应的实例对象,而且try语句块中剩余的语句一般不会被继续执行。

产生的异常实例对象会依次匹配各个catch语句块中的类型,一旦匹配上,就会进入相应的语句块并执行,这时称异常被捕获;否则,表明异常没有被捕获到,即异常没有被处理,程序会将异常向上传递。

try-catch-finally结构整体相当于一条语句,因此可以嵌套在其他的结构中使用,如果try语句块中没有发生异常,则所有的catch语句块都不会被执行。

finally语句块一般总会被执行,不管有没有异常发生(除非遇到上面的几种情况)。即使在try或catch语句块中有return语句时,finally语句块也会被执行到,执行顺序为:当在try或catch中遇到return语句时,程序跳转到finally语句块中执行,执行完毕,再运行该return语句。如果在try或catch中遇到System.exit(0);或System.exit(-1);时,程序退出系统。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值