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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔玉吉 中级黑马   /  2012-3-11 01:12  /  3375 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test
{
        public static void main(String args[])
        {

                try
                {

                        return;

                }
                finally
                {

                        System.out.print("1");

                }
        }  
}

11 个回复

倒序浏览
在输出语句之前加上System.exit(0);

即:
public class Test {
        public static void main(String args[]) {

                try {

                        return;

                } finally {
                        System.exit(0);
                        System.out.print("1");

                }
        }
}
回复 使用道具 举报
不用很麻烦啊,在finally那句打印语句之前加return;就OK了,不过这样就不会再执行try的return了。
回复 使用道具 举报
好像只有关掉JVM才行
回复 使用道具 举报
不可能的事情。。fianlly本来就是总会被执行的, 再说了 你不想让他执行不写就是了,你写了不让他执行有什么意义呢?
回复 使用道具 举报
当你捕获到异常的时候,在处理异常的时候你完全可以System.exit(0);命令虚拟机,在执行异常处理的时候,虚拟机都退出了,又怎么能执行finally块中的代码呢。所以,在finally前边的代码中加入System.exit(0),那么代码在执行到System.exit(0)时就退出了虚拟机,后边finally里边的代码也就不执行了,这个问题在第七届论坛里边提到过,你可以进第七届论坛里边找下
回复 使用道具 举报
本帖最后由 刘雷冲 于 2012-3-11 11:17 编辑
  1. try {
  2.                         return;
  3.                         System.out.print("2");
  4.                        
  5.                 } finally {
  6.                           System.exit(0);
  7.                         System.out.print("1");
  8.                        
  9.                 }
复制代码
注:楼主可以打个断点试一下执行过程
回复 使用道具 举报
王杰 黑马帝 2012-3-11 09:18:46
8#
  1. public class Test {
  2.          public static void main(String args[]) {

  3.                 try {
  4.                          System.exit(0);
  5.                         return;
  6.                  }
  7. finally {
  8.                          System.out.print("1");

  9.                 }
  10.          }
  11. }
复制代码
回复 使用道具 举报
你想让finally里的语句不执行 那么你为什么要写呢?   既然你不想让她执行  最好的办法就是不写即可,毕竟 finally是可有可无的,你这样写了又不想让他执行岂不是自找麻烦了么
回复 使用道具 举报
在catch执行一个后面加一句:System.exit(0);或者不加:finally语句!
回复 使用道具 举报
package 异常;
import java.util.*;
public class exception {
    public static void main(String[] args){
        System.out.println("请输入一到三之间的数字");
        Scanner in=new Scanner(System.in);    这里如果输入一个a的话,后面就不会执行了
        int Code1 =in.nextInt();   
        try{
            switch(Code1){
            case 1:
            System.out.println(".Net");
            break;
            case 2:
            System.out.println("java");
            break;
            }
        }
        catch(Exception ex){
            System.out.println("输入不为数字");
        }
        finally{
            System.out.println("出错了");
        }
    }
}

int code1=it.nextInt()就出错了,

Scanner in=new Scanner(System.in);
        int Code1 =in.nextInt();
要把这两行也放到try{}中。
回复 使用道具 举报
解决方法是在finally的第一条语句中加上System.exit(0);
不用很麻烦啊,在finally那句打印语句之前加return;就OK了,不过这样就不会再执行try的return了。
这样也上可以的,不过try语句有三种呢,无需故意这样的,发生异常要么抛,要么try,如果你try了,但你要是不处理的话就要抛了啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马