try中有return,finally块会不会执行

问题描述

try{……return;}catch(Exceptione){e.printStackTrce;}finally{……}上述程序块中,在try中没有发现异常的话,finally块中的语句是否会执行?

解决方案

解决方案二:
你写个小玩意测试一下不就知道了
解决方案三:
会执行!当没有发现异常的话finally里的语句会在return之前执行。
解决方案四:
会,除非:publicclassTest{publicstaticvoidmain(String[]args)throwsException{foo();}staticintfoo()throwsException{try{System.out.println("1");System.exit(1);System.out.println("2");return2;}finally{System.out.println("3");}}}

解决方案五:
会执行,try中遇到return关键字时会先跳到finally块中执行,执行完了就回来执行return语句了你也可以自己设一个段点看看,映像会深些
解决方案六:
不管有没有发现异常,finally语句块中的语句总会执行的建议你写一个测试类体会体会
解决方案七:
引用5楼yang677888的回复:

不管有没有发现异常,finally语句块中的语句总会执行的建议你写一个测试类体会体会

我那个System.exit()例子是例外
解决方案八:
除强制退出外System.exit()都执行
解决方案九:
finally里边的语句,会在return之前执行;所以finally一般用来做一些清尾工作,如:释放连接,等等.除非你在catch里关了JVM.
解决方案十:
对,会执行,在return前执行。
解决方案十一:
呵呵,前几天的面试题。程序会先执行finally中的代码然后执行return
解决方案十二:

解决方案十三:
答案都统一啊,我来灌水!
解决方案十四:
楼主自己把这段小程序完善下,加个main方法,加几个控制台打印,此贴答案立即就有了。这个问题的答案当然是:finally会被执行,无论正常情况下还是出异常情况下,且在return前执行。
解决方案十五:
一定会执行,try。。。。catch。。。。。finally,finally模块里的东西是一定会执行的。
解决方案:
一定会执行!有或没有异常都会执行当没有发现异常的话finally里的语句会在return之前执行。
解决方案:
如果try{}模块中的语句没有错误,catch{}模块里的就不会执行了,但finally{}模块里的语句无论有没有异常都执行,try{}里语句有问题return就肯定不会执行了被
解决方案:
引用5楼yang677888的回复:

不管有没有发现异常,finally语句块中的语句总会执行的建议你写一个测试类体会体会

是这样的,不过发现在发现异常时候,异常句子的后面的语句不会执行的例如try{inta=10;intb=0;a=a/b;System.out.println("能执行后面的语句吗?")}catch(Exceptione){....}finally{System.out.println("这一句是会执行的哦!");}运行程序后,你会发现System.out.println("能执行后面的语句吗?")没有打印出来System.out.println("这一句是会执行的哦!");这一句打印出来了
解决方案:
借3楼的代码:publicclassTest{publicstaticvoidmain(String[]args)throwsException{foo();}staticintfoo()throwsException{try{System.out.println("1");//你在这里加入一段异常代码,能帮你更好的理解System.out.println(5/0);//被零除System.exit(1);//System.exit(0);//不管是否是正常退出或异常退出System.out.println("2");return2;}finally{System.out.println("3");}}}

结果:13Exceptioninthread"main"java.lang.ArithmeticException:/byzero
解决方案:
7楼凶器正解!
解决方案:
在return前执行。
解决方案:
debug一下比什么都清楚,或是多打印几个system.out就知道了这个问题以前scjp考过
解决方案:
引用19楼woodlikewater的回复:

7楼凶器正解!

人间凶器会执行finally的
解决方案:
引用6楼shine333的回复:

引用5楼yang677888的回复:不管有没有发现异常,finally语句块中的语句总会执行的建议你写一个测试类体会体会我那个System.exit()例子是例外

那个我邪恶是一下!那个而回先退出程序吗?
解决方案:

解决方案:
前几天,我面试的那家公司的技术人员提的技术人员提出来的!我运气不错,猜对了!以前没遇到!有些问题还是得好好的思考一下!
解决方案:
当然执行了,如果Try和finally里都有return的话大家猜猜return的是哪一个?:)
解决方案:
会执行
解决方案:
肯定会,必须会,否则就不是finally,finally==终结者!
解决方案:
会执行
解决方案:
finally块里面的代码是一定会执行的,在try代码块返回之后
解决方案:
会执行,无论怎么操作,那是最终执行的语句。
解决方案:
引用5楼yang677888的回复:

不管有没有发现异常,finally语句块中的语句总会执行的建议你写一个测试类体会体会

嗯,同意。
解决方案:
同上
解决方案:
会在return之前执行
解决方案:
会执行的,不信上面有列子,自己执行就OK了
解决方案:
当然会执行啦
解决方案:
finally是必须执行的..return执行后方法就跳出了.你看是哪个先执行,哪个后执行?
解决方案:
会执行!发生异常与否,finally里的语句都会在return之前执行。
解决方案:
会执行!发生异常与否,finally里的语句都会在return之前执行。呵呵灌水哦
解决方案:
灌水,基本问题,建议多试验。
解决方案:
一定会执行的
解决方案:
引用6楼shine333的回复:

引用5楼yang677888的回复:不管有没有发现异常,finally语句块中的语句总会执行的建议你写一个测试类体会体会我那个System.exit()例子是例外

我怎么感觉到,你一运行try就关机似得。。。。那它永远不执行finally.O(∩_∩)O哈哈~
解决方案:
finally会执行,并且是在return之前执行!你可以写个小例子,设上断点试试看!
解决方案:
会执行的。
解决方案:
这种问题自己试试就可以了,印象会比较深啊~~~
解决方案:
讲解得好全面了。
解决方案:
即使有return也会执行
解决方案:
我楼上狮子跑快吧?那你说是那狮子快还是飞机飞的快。
解决方案:
自己多加几个system.out.print()看看
解决方案:
除强制退出外System.exit()都执行当没有发现异常的话finally里的语句会在return之前执行

时间: 2024-09-30 14:27:37

try中有return,finally块会不会执行的相关文章

try-求助c# return 之后还会往下执行

问题描述 求助c# return 之后还会往下执行 在try里用return 截断执行,但是还是继续执行了,这时怎么回事呢,我用的是一个方法里进行了判断,然后用了return ,可是执行到这里后接下来的其他下面的方法还是被执行了,怎么回事 解决方案 return 没有走到. 只有一种情况会执行return后面的代码,就是把return写在try/catch中,finally还是会执行 解决方案二: 把代码贴上来看一下! 解决方案三: public void Pay() { try { B_bor

asp.net-Mvc @ajax.actionlink 请求来替换目标块以后,不执行js

问题描述 Mvc @ajax.actionlink 请求来替换目标块以后,不执行js 在一个页面用@ajax.actionlink请求来替换,目标Id的内容.但是js不执行. @Ajax.ActionLink("写日志", "WriteJournal", new AjaxOptions() { UpdateTargetId = "replacetarget", InsertionMode = InsertionMode.Replace, Http

oracle 包,函数,过程,块的创建和执行及在java中执行(转)

  SQL> create or replace procedure sp_guocheng1 is--如果有这个名字就替换  2  begin--执行部分  3  insert into guocheng values('liyifeng','liyifeng');  4  end;  5  /  --执行的意思 Procedure created     显示错误SQL> show error;Errors for PROCEDURE LIYIFENG.SP_GUOCHENG1: LINE

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

问题描述 Java中,finally在try语句块中的return前执行还是后执行 为什么finally没有改变变量a的值.求大神解答 解决方案 1.不管有木有出现异常,finally块中代码都会执行: 2.当try和catch中有return时,finally仍然会执行: 3.finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行

有return的情况下try catch finally的执行顺序

背景:          昨天一个朋友出去面试,遇到这么一道题:"C#  catch里有return,finally里还执行吗?" 个人实践小结:         1.不管有木有出现异常,finally块中代码都会执行.         2.当try和catch中有return时,finally仍然会执行.     具体案例如下(此处以没有返回值的函数进行验证):                 3.如果是值传递,finally中改变的值对try或catch块中return返回的值无影

Java I/O学习(附实例和详解)

原文地址:http://blog.csdn.net/u013142781/article/details/50814649 一.Java I/O类结构以及流的基本概念 在阅读Java I/O的实例之前我们必须清楚一些概念,我们先看看Java I/O的类结构图: Java I/O主要以流的形式进行读写数据. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. 根据处理数据

Java异常及异常块执行次序(try、catch、finally、return)

Java异常: ①使用try-catch-finally处理异常: ②使用throw.throws抛出异常: ③上边为java异常处理5个关键字. 异常是程序在设计时或运行时产生的错误,异常处理是处理异常的过程,一旦异常被处理后,异常就不存在了,因此程序就可以继续运行了.如果异常不被处理,程序就会被强制终止(终止出现异常的业务代码执行). 在程序运行中,程序的try.catch.finally.return执行次序,就要进行考虑了. ①:捕获异常 try{ //执行可能产生异常的代码 }catc

java中 try return finally return(转)

finally块里面的代码一般都是会执行的,除非执行 System.exit(int),停止虚拟机,断电. 1.若try代码块里面有return ,假设要return 的值 是A,A为基本类型或者被final修饰的不可变类型(如:基本类型的包装类型Integer,Double,String ),并且finally语句块里面 对try语句块里面要return 的值A做了修改 比如A+1,但是最终返回的值是不受finally里面对A值操作的影响的.看下面的示例: 1.1范围值为基本类型 public

finally块的问题(finally block does not complete normally) (转)

当finall块中包含return语句时,Eclipse会给出警告"finally block does not complete normally",原因分析如下: 1.不管try块.catch块中是否有return语句,finally块都会执行.2.finally块中的return语句会覆盖前面的return语句(try块.catch块中的return语句),所以如果finally块中有return语句,Eclipse编译器会报警告"finally block does