试解释Java与Finally的意义及用法?

如题所述

是想知道finally的用处吧.我给你举几个例子.

当我们在程序中需要与文件,与数据库进行操作的时候.这时候finally关键字就是大显身手的时刻了.比如:当打开一个文件后,在程序操作的过程中可能发生了某种异常,这时候程序就会把异常向外抛出,造成程序的中断执行,因此我们已经无法对文件进行关闭.当在try的结束位置加上finally,可以把文件关闭的操作放在finally语句块中.这样无论发生不发生异常,finally中的代码都会被执行,这就避免了文件可能没有被关闭的情况.

try
{
//可能发生异常的代码

}catch(Exception e)
{
//捕获异常
}finally
{

//必要的操作,无论异常是否发生,都会被执行
}

尤其是在操作数据库的时候,如果不用finally,那么一旦发生异常,连接就无法关闭,会造成数据库的连接资源耗尽.

这就是Java 中finally的作用.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-09
finally是java中的保留关键字,在try...catch...finally或者try...finally句式中使用本回答被提问者和网友采纳
第2个回答  2010-07-09
好无聊的问题 一点联系都没有
第3个回答  推荐于2017-10-11
一、 finally:java的一种异常处理机制。
finally是对Java 异常处理模型的最佳补充。finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。
二、在java中的finally关键一般与try一起使用,在程序进入try块之后,无论程序是因为异常而中止或其它方式返回终止的,finally块的内容一定会被执行
写个例子来说明下:
[java] view plaincopyprint?
<pre class="java" name="code">package com.teedry.base;

public class TryAndFinallyTest {

public static void main(String[] args) throws Exception{
try{
int a = testFinally(2);
System.out.println("异常返回的结果a:"+a);
}catch(Exception e){
int b = testFinally(1);
System.out.println("正常返回的结果b:"+b);
}
int b = testFinally(3);
System.out.println("break返回的结果:"+b);

b = testFinally(4);
System.out.println("return返回的结果:"+b);

}

static int testFinally(int i) throws Exception{
int flag = i;
try{//一旦进去try范围无论程序是抛出异常或其它中断情况,finally的内容都会被执行
switch(i){
case 1:++i;break;//程序 正常结束
case 2:throw new Exception("测试下异常情况");
case 3:break;
default :return -1;
}
}finally{
System.out.println("finally coming when i="+flag);
}
return i;
}
}
</pre><br>
<pre></pre>
<p>执行结果如下:</p>
<p>finally coming when i=2<br>
finally coming when i=1<br>
正常返回的结果b:2<br>
finally coming when i=3<br>
break返回的结果:3<br>
finally coming when i=4<br>
return返回的结果:-1</p>
<p> </p>
<p>结果说明无论上述什么情况,finally块总会被执行。 </p>

二 try的范围内存在exception的话,就会在exception的位置跳到exception哪里,然后执行完exception之后就马上进入finally。
假如exception范围内存在return这些的也会执行finally
假如try范围内不存在exception的话,就执行完try范围内代码之后进入finally执行,finally代码

其实,一般finally写的代码就是流的关闭语句,

假如还是不明白,试一下运行我下面写的几个代码就知道的了。假如try不存在exception的话:
try{
System.out.println("try");
}catch(Exception e)
{
System.out.println("Exception");
}
finally{
System.out.println("Finally");
}

假如try中存在exception的:
try{
String demo = null;
demo.split(";");
System.out.println("try");
}catch(Exception e)
{
System.out.println("Exception");
}
finally{
System.out.println("Finally");
}

假如try中存在exception,然后exception中存在跳出语句的:
try{
String demo = null;
demo.split(";");
System.out.println("try");
}catch(Exception e)
{
System.out.println("Exception");
return;
}
finally{
System.out.println("Finally");
}

假如try中不存在exception,但是try中存在跳出语句的:
try{
System.out.println("try");
return;
}catch(Exception e)
{
System.out.println("Exception");
}
finally{
System.out.println("Finally");
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网