java中在什么情况下用finally 什么情况下必须使用finally修饰入参
很多朋友对于java中在什么情况下用finally和什么情况下必须使用finally修饰入参不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
java为什么需要finally
无论是否出现异常不也要执行吗?这句话是有问题的,有些异常如果不处理,也就不会继续下去了。即程序从catch里改变控制流,不会执行后面的语句。加了finally,可以保证即使因为异常,后面的代码不会被执行,但是finally里面的语句还是会执行,这样可以释放一些申请的资源~或者做一些其他工具,比如作profiling统计等。
你可以在catch里面加个return来模拟类似情况,看看后面的语句会不会执行?
看看finally子例程里面的语句会不会执行,以及他们的执行顺序...
什么情况下必须使用finally修饰入参
我们依次来回顾一下每种情况下final的作用。首先来看第一种情况,如果final修饰的是一个基本类型,就表示这个变量被赋予的值是不可变的,即它是个常量;如果final修饰的是一个对象,就表示这个变量被赋予的引用是不可变的,这里需要提醒大家注意的是,不可改变的只是这个变量所保存的引用,并不是这个引用所指向的对象。在第二种情况下,final的含义与第一种情况相同。实际上对于前两种情况,有一种更贴切的表述final的含义的描述,那就是,如果一个变量或方法参数被final修饰,就表示它只能被赋值一次,但是JAVA虚拟机为变量设定的默认值不记作一次赋值。
被final修饰的变量必须被初始化。初始化的方式有以下几种:
1、在定义的时候初始化。
2、final变量可以在初始化块中初始化,不可以在静态初始化块中初始化。
3、静态final变量可以在静态初始化块中初始化,不可以在初始化块中初始化。
4、final变量还可以在类的构造器中初始化,但是静态final变量不可以。
接下来我们一起回顾一下finally的用法。这个就比较简单了,它只能用在try/catch语句中,并且附带着一个语句块,表示这段语句最终总是被执行。请看下面的代码:
Java代码
public final class FinallyTest{
public static void main(String[] args){
try{
throw new NullPointerException();
} catch(NullPointerException e){
System.out.println("程序抛出了异常");
} finally{
System.out.println("执行了finally语句块");
}
}
}
运行结果说明了finally的作用:
1、程序抛出了异常
2、执行了finally语句块
请大家注意,捕获程序抛出的异常之后,既不加处理,也不继续向上抛出异常,并不是良好的编程习惯,它掩盖了程序执行中发生的错误,这里只是方便演示,请不要学习。
试解释Java与Finally的意义及用法
是想知道finally的用处吧.我给你举几个例子.
当我们在程序中需要与文件,与数据库进行操作的时候.这时候finally关键字就是大显身手的时刻了.比如:当打开一个文件后,在程序操作的过程中可能发生了某种异常,这时候程序就会把异常向外抛出,造成程序的中断执行,因此我们已经无法对文件进行关闭.当在try的结束位置加上finally,可以把文件关闭的操作放在finally语句块中.这样无论发生不发生异常,finally中的代码都会被执行,这就避免了文件可能没有被关闭的情况.
try
{
//可能发生异常的代码
}catch(Exception e)
{
//捕获异常
}finally
{
//必要的操作,无论异常是否发生,都会被执行
}
尤其是在操作数据库的时候,如果不用finally,那么一旦发生异常,连接就无法关闭,会造成数据库的连接资源耗尽.
这就是Java中finally的作用.
java中Finally到底起的是什么作用
finally常用来处理java一些后续的工作.
在java的的finally首先必须使用在所有catch的最后位置,其次它是必须执行的,无条件执行,甚至即使前面的try-catch语句中已经存在异常了,它仍然会执行.
不管try语句块正常结束还是异常结束,finally语句块是保证要执行的.如果try语句块正常结束,那么在try语句块中的语句都执行完之后,再执行finally语句块.
OK,关于java中在什么情况下用finally和什么情况下必须使用finally修饰入参的内容到此结束了,希望对大家有所帮助。