java异常处理语句是,跟我学java编程—Java异常处理语句finally的用法

1ba02895fb0b07719fa5e10ff3779c50.png

前面讲过,假如try句子块中存在反常,则反常之后的代码将不再履行。但在某些特定的状况下,不论是否有反常发作,总是要求某些特定的代码有必要被履行。例如,程序中履行数据库衔接的代码,不论对数据库的操作是否成功,终究都要封闭数据库的衔接以开释内存资源,这就需求用到finally句子。

finally句子的语法规矩如下:

try {

…….. //代码段(可能发作反常的代码)

} catch( 反常类型 ex ) {

…….. //对反常进行处理的代码

} finally {

…….. //总要被履行的代码

}

……… //代码段

下面经过示例演示throws的用法,代码如下:

代码为了演示finally句子的效果,在try句子块中设置了除零反常。当代码履行到句子i= 12/0时,程序抛出反常。操控台显现成果如下图所示:

throws实例输出成果

从上面的代码能够看出,出现反常仍是没出现反常,都不会影响到finally句子的履行。只要一种状况会阻挠finally句子的履行,便是JVM被封闭。不论try是以何种办法完毕的(正常完毕、反常完毕、经过return或break操控流句子完毕),finally句子也总是恰好在成员函数回来前履行。

下面经过示例ReturnExceptionDemo解说return句子的效果:

运转程序,输出成果如下图所示:ReturnExceptionDemo输出成果

从输出成果能够看出,不论什么状况下,finally句子都会被履行。

在代码methodB办法try句子块中,程序履行到return句子时,程序会发生一个部分打开,finally句子块的代码会被刺进到return句子之前履行。不过留意的是,finally句子块的代码尽管在return句子之前履行,可是finally句子块的代码不能够经过从头赋值的办法来改动return句子的回来值。

看如下的示例代码:

比如代码中,本来是想在finally句子块中经过改动temp的值,来影响testFinally办法终究回来值,可是真的影响了吗?testFinally办法并没有回来咱们需求的值。尽管finally句子块的代码不会影响try句子块中return句子的回来值。可是能够在finally内部运用return句子。假如把上列的finally句子块的代码改为如下所示:

因为finally句子块的代码优于return句子履行,假如此刻在finally句子块中内部也有return句子,这将会导致该办法直接回来,而使try句子块中的return句子得不到履行时机,所以回来成果为2。

对上述状况,其实更合理的做法是,既不在try句子块中运用return句子,也不在finally句子块中运用return句子,而应该在finally句子块之后运用return句子来表明办法的完毕和回来。修改后的代码如下:

■ 常识指点

finally句子一般和try......catch......连用,用来做一些善后整理作业,能够把文件封闭,封闭数据库衔接等操作放置到finally句子块内,防止程序出现反常时,不能及时履行封闭文件等开释系统资源操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值