试解释Java与Finally的意义及用法?
发布网友
发布时间:2022-04-28 14:53
我来回答
共4个回答
热心网友
时间:2022-06-19 07:16
是想知道finally的用处吧.我给你举几个例子.
当我们在程序中需要与文件,与数据库进行操作的时候.这时候finally关键字就是大显身手的时刻了.比如:当打开一个文件后,在程序操作的过程中可能发生了某种异常,这时候程序就会把异常向外抛出,造成程序的中断执行,因此我们已经无法对文件进行关闭.当在try的结束位置加上finally,可以把文件关闭的操作放在finally语句块中.这样无论发生不发生异常,finally中的代码都会被执行,这就避免了文件可能没有被关闭的情况.
try
{
//可能发生异常的代码
}catch(Exception e)
{
//捕获异常
}finally
{
//必要的操作,无论异常是否发生,都会被执行
}
尤其是在操作数据库的时候,如果不用finally,那么一旦发生异常,连接就无法关闭,会造成数据库的连接资源耗尽.
这就是Java 中finally的作用.
热心网友
时间:2022-06-19 07:17
finally是java中的保留关键字,在try...catch...finally或者try...finally句式中使用
热心网友
时间:2022-06-19 07:17
好无聊的问题 一点联系都没有
热心网友
时间:2022-06-19 07:18
一、 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");
}