黑马程序员技术交流社区

标题: 一个关于异常的小问题 [打印本页]

作者: alexsoon    时间: 2014-6-30 19:30
标题: 一个关于异常的小问题
先来程序非常简单
public class AlexDemo{
public static void main (String [] args)
   {
        System.out.println(selent());
   }
static boolean selent()
    {
         try {
                 return true;
              }
        finaly
             {
                 return false;
             }
    }
}
这个程序可以编译通过没有错误?为什么返回值是false?在内存中是什么样的
作者: endian11    时间: 2014-6-30 19:54
finally 是最后执行的,selent退出之前一定要执行finally
作者: blue_sky    时间: 2014-6-30 21:54
使用了try后,为什么没有使用catch来捕获异常?
finally里的代码,总是在最后执行,所以总会返回false;
作者: blue_sky    时间: 2014-6-30 21:57
在执行try的时候,应为有finally的存在,没有执行return true;而是转到finally里面执行,执行了return false;所以try代码块里的return true;就没有执行;
作者: 西地那非    时间: 2014-6-30 22:04
因为有finally的存在,在 程序结束之前,也就是说 rerurn true 之前,一定会执行finally语句块,在执行finally时,return false ,程序结束。
作者: bigworld    时间: 2014-6-30 22:04
finally里的代码,总是在最后执行,所以总会返回false;
作者: 奶茶妹ltt    时间: 2014-6-30 22:06
finally里的代码,最后执行,返回false;
作者: 跃动    时间: 2014-6-30 22:31
执行流程:
1.执行return返回语句(return之后的语句内容),计算返回值,暂存在一个临时变量中。
2.执行finally语句块。
3.return 原来已经计算得到的结果值。

不知能否解决你的疑问?
作者: luio    时间: 2014-6-30 23:04
finaly报错啊。。是最后执行的 和TRY冲突




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2