当前位置:首页 » 编程语言 » 在java中finally

在java中finally

发布时间: 2022-09-30 21:41:38

java中,finally在try语句块中的return前执行还是后执行

1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

Ⅱ java为什么需要finally

无论是否出现异常不也要执行吗?这句话是有问题的,有些异常如果不处理,也就不会继续下去了。即程序从catch里改变控制流,不会执行后面的语句。加了finally,可以保证即使因为异常,后面的代码不会被执行,但是finally里面的语句还是会执行,这样可以释放一些申请的资源~或者做一些其他工具,比如作profiling统计等。

你可以在catch里面加个return来模拟类似情况,看看后面的语句会不会执行?
看看finally子例程里面的语句会不会执行,以及他们的执行顺序...

Ⅲ finally在java的用法

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");
}

走过那4个方法你就懂得呢

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

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

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

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

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

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

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

这就是Java 中finally的作用.

Ⅳ java中的“try - catch -finally”结构中的“finally”有哪些用途

可以这么理解
try块中的内容是在无异常发生时执行到结束
catch块中的内容,是在try块中内容发生catch所声明的异常时,跳转到catch块执行
finally块则是无论是否发生异常,都会执行finally块的内容
所以,代码逻辑中有需要无论发生什么都必须执行的代码,则可以放在finally块中
例如:最常见的就是把关闭connection、释放资源等的代码放在finally块中

Ⅵ java中final,finally和finalize的区别

1. final
在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。下面将对其详细介绍。
1.1 修饰类
当用final修饰类的时,表明该类不能被其他类所继承。当我们需要让一个类永远不被继承,此时就可以用final修饰,但要注意:
final类中所有的成员方法都会隐式的定义为final方法。
1.2 修饰方法
使用final方法的原因主要有两个:
(1) 把方法锁定,以防止继承类对其进行更改。
(2) 效率,在早期的java版本中,会将final方法转为内嵌调用。但若方法过于庞大,可能在性能上不会有多大提升。因此在最近版本中,不需要final方法进行这些优化了。
final方法意味着“最后的、最终的”含义,即此方法不能被重写。
注意:若父类中final方法的访问权限为private,将导致子类中不能直接继承该方法,因此,此时可以在子类中定义相同方法名的函数,此时不会与重写final的矛盾,而是在子类中重新地定义了新方法。

1.3 修饰变量
final成员变量表示常量,只能被赋值一次,赋值后其值不再改变。类似于C++中的const。
当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。本质上是一回事,因为引用的值是一个地址,final要求值,即地址的值不发生变化。
final修饰一个成员变量(属性),必须要显示初始化。这里有两种初始化方式,一种是在变量声明的时候初始化;第二种方法是在声明变量的时候不赋初值,但是要在这个变量所在的类的所有的构造函数中对这个变量赋初值。
当函数的参数类型声明为final时,说明该参数是只读型的。即你可以读取使用该参数,但是无法改变该参数的值。
2. finally
finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下。(×)(这句话其实存在一定的问题)
很多人都认为finally语句块一定会执行,但真的是这样么?答案是否定的,例如下面这个例子:
只有与finally对应的try语句块得到执行的情况下,finally语句块才会执行。以上两种情况在执行try语句块之前已经返回或抛出异常,所以try对应的finally语句并没有执行。
3. finalize
finalize()是在java.lang.Object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动,该对象被回收的时候被调用。其实gc可以回收大部分的对象(凡是new出来的对象,gc都能搞定,一般情况下我们又不会用new以外的方式去创建对象),所以一般是不需要程序员去实现finalize的。
特殊情况下,需要程序员实现finalize,当对象被回收的时候释放一些资源,比如:一个socket链接,在对象初始化时创建,整个生命周期内有效,那么就需要实现finalize,关闭这个链接。
使用finalize还需要注意一个事,调用super.finalize();
一个对象的finalize()方法只会被调用一次,而且finalize()被调用不意味着gc会立即回收该对象,所以有可能调用finalize()后,该对象又不需要被回收了,然后到了真正要被回收的时候,因为前面调用过一次,所以不会调用finalize(),产生问题。 所以,推荐不要使用finalize()方法,它跟析构函数不一样。

Ⅶ java中final和finally的区别

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

finally—在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)

Ⅷ java finally什么时候执行

只要代码进入了try

finally无论代码是否出现异常都会被执行

涉及到 return 和 finally 的执行顺序

在 return 之前,finally 会被执行,但是值得注意的是,finally 中的代码不会对返回值造成影响

AC-重定向设置
  • 主功能-重定向功能重定向-普通模式重定向-完整模式
  • 附加1-去广告功能
  • 去广告-原始模式去广告-单列普通
    去广告-单列居中去广告-双列居中
  • 附加2-Favicon功能
  • 附加3-编号功能
  • 附加4-下划线
  • 联系作者,提建议,寻求帮助,脚本定制点我
取消
保存

Ⅸ java中的return和finally谁先执行

finally先执行.
可以形象的说,方法在顺序化的一直往下走,
走着走着,发现了Rerurn(并未执行),它知道它快活不下去了,临死前.他就去找Finally,让Finally把事情做完.
这种情况在Debug的时候比较明显,走到Return所在行,就进Finally,然后在回到Rerurn,做返回

热点内容
最近上传视频 发布:2024-12-25 21:05:39 浏览:393
php招聘源码 发布:2024-12-25 21:05:38 浏览:988
c语言输入数组赋值 发布:2024-12-25 21:01:43 浏览:652
22款奔驰e买哪个配置 发布:2024-12-25 20:54:08 浏览:737
金铲铲之战怎么看之前的服务器 发布:2024-12-25 20:52:36 浏览:448
unix环境高级编程英文版 发布:2024-12-25 20:50:35 浏览:291
我的世界电脑版服务器如何改实验模式 发布:2024-12-25 20:41:57 浏览:129
数据库删过程 发布:2024-12-25 20:39:38 浏览:447
创建sql存储过程 发布:2024-12-25 20:29:14 浏览:531
python目录存在 发布:2024-12-25 20:18:51 浏览:672