黑马程序员技术交流社区

标题: finally里的代码怎么样就不执行了? [打印本页]

作者: 刘晓康    时间: 2012-3-30 17:11
标题: finally里的代码怎么样就不执行了?
try
{
        代码        
}
catch (异常对象)
{
               代码
}
finally
{
             代码
}
有什么方法可以不让finally中的代码执行吗?
作者: 何万县    时间: 2012-3-30 17:17
不可以的,除非程序退出


作者: 许飞翔    时间: 2012-3-30 17:25
可以用system.exit(0); 语句
或者退出系统(关闭java虚拟机)
作者: 方江    时间: 2012-3-30 17:31
finally是最终执行。当然,你抛的如果是循环多线程然后死锁就执行不到了,直接挂掉。
finally是无论条件是否符合,抛没抛异常都会执行。当然你可以不写finally。也可以抛的。不写不就完了、

作者: Kristy_Li    时间: 2012-3-30 17:32
可以在try语句或catch语句块中使用System.exit(0)语句退出!至于关闭虚拟机,一般都不会采用
作者: newlaw2013    时间: 2012-3-30 17:43
本来是要发到博客中去的,看到楼主的问题与try知识点还是有些联系的,希望能帮你加深这个知识点的认识。

/*
*程序运行的结果是1,因为try中已经return了x;finally虽然最后执行了语句,但因其中
没有返回x的值,所以主函数拿到的是try中返回的值,即1.
*/

public class TryDemo {
        public static void main(String[] args){
                System.out.println(new TryDemo().test());
        }
        static int test(){
                int x = 1;
                try
                {
                        return x;
                }
                finally
                {
                        ++x;
                        //return x;
                }
        }
}
作者: 阿牛    时间: 2012-3-30 18:05
这种方法可以,在try或者catch中加上一句System.exit(0);
class testDemo
{
        public static void main(String[] args)
        {
                try
                {
                        System.out.println(3/0);
                       
                }
                catch (Exception e)
                {
                        System.out.println("here is a exception");
                        System.exit(0);

                }
               
                finally

                {
                        System.out.println("here is the location after try-catch");
                }

        }
       
}
作者: 阿牛    时间: 2012-3-30 18:10
Finally语句是为异常处理事件提供的一个清理机制,一般是用来关闭文件或释放其他系统资源。作为try-catch-finally结构的一部分,可以没有Finally语句,如果存在Finally语句,不论try块中是否发生异常,是否执行过catch语句,都执行finally语句。
所以,如果在try或catch中让程序直接退出的话,那就违背java设计Finally的初衷了。
作者: 胡川    时间: 2012-3-30 18:11
finally是不管什么样的情况都会执行它后面的代码块的,return的话也会执行的,除非上面代码快遇到
System.exit(0),才会直接退出,不执行finally的语句




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