A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘晓康 中级黑马   /  2012-3-30 17:11  /  2396 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

try
{
        代码        
}
catch (异常对象)
{
               代码
}
finally
{
             代码
}
有什么方法可以不让finally中的代码执行吗?

8 个回复

倒序浏览
不可以的,除非程序退出

回复 使用道具 举报
可以用system.exit(0); 语句
或者退出系统(关闭java虚拟机)
回复 使用道具 举报
finally是最终执行。当然,你抛的如果是循环多线程然后死锁就执行不到了,直接挂掉。
finally是无论条件是否符合,抛没抛异常都会执行。当然你可以不写finally。也可以抛的。不写不就完了、
回复 使用道具 举报
可以在try语句或catch语句块中使用System.exit(0)语句退出!至于关闭虚拟机,一般都不会采用
回复 使用道具 举报
本来是要发到博客中去的,看到楼主的问题与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:52
7#
这种方法可以,在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:59
8#
Finally语句是为异常处理事件提供的一个清理机制,一般是用来关闭文件或释放其他系统资源。作为try-catch-finally结构的一部分,可以没有Finally语句,如果存在Finally语句,不论try块中是否发生异常,是否执行过catch语句,都执行finally语句。
所以,如果在try或catch中让程序直接退出的话,那就违背java设计Finally的初衷了。
回复 使用道具 举报
胡川 中级黑马 2012-3-30 18:11:02
9#
finally是不管什么样的情况都会执行它后面的代码块的,return的话也会执行的,除非上面代码快遇到
System.exit(0),才会直接退出,不执行finally的语句
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马